OpenGL Side Project

It’s been a long while since my last update. I was extremely busy for the past few months and only by now I have a little bit of spare time so I decided to work on a little side project just for fun.

I always wanted to learn OpenGL since a teen and hoped that one day I could make my own game engine that runs OpenGL. Even though I created a half-baked game engine/level editor thingy back in 2010 but I was using Irrlicht rendering engine so that doesn’t really count.

After messing around a bit with Qt 5 and OpenGL coding, I’m finally getting a pretty awesome results!! :

At the moment my prototype does the following:

  • Running OpenGL 3.2 core profile and GLSL 150
  • Loads OBJ files and PNG/JPEG textures
  • Move, rotate, scale model
  • Camera navigation (move, rotate, look at) using keyboard input
  • Skybox

Like I said, nothing fancy yet but even this took me quite some time to get it working since I’m using Qt 5 with OpenGL. Most of the tutorials out there only teach OpenGL with SDL, GLFW, GLUT, etc. but not with Qt. The reason why I’m using Qt instead of SDL is mainly because I like the additional features in Qt such as networking, image loader, file loader, etc. which will save a ton of my time since I don’t have to reinvent the wheel, or worse, trying to integrate my project with random 3rd party libraries that may or may not compatible with each other. I had a pretty bad experience when working on my Irrlicht project back then so I’m trying to avoid that now. Also, I may want to use Qt 5 to create a level editor for this project (currently only working on the ‘core’ library) so it makes sense if I also use Qt for the core parts.

Since this is a spare time side project so I might not work on it on a regular basis and might not even finish it, who knows? That’s all for today, ciao.

Easy Screenshot 1.0

UPDATE: This program is now known as Easy Screencap and has been moved to here

Recently I created a simple program for a client. They’re working on a project for a theme park whereby an animated video showing a bunch of penguins running around on an iceberg is being overlayed on top of a webcam video which creates the illusion of penguins running around the visitors. They will then display the final result on a big screen for the visitors to pose and take photos of them with the penguins. This is how it looks like, inside the actual theme park:

Think of it as an augmented reality project without the tracking part, since the webcam is always staying at the same location. My program in-charge of taking screenshots when the operator presses a shortcut key (which you can customize) and the images will be automatically saved to a folder (which you can also customize), each with a unique file name. The folder is then shared with the printer’s computer through local network and visitors can pick which photos (screenshots) they want to buy so the printer will print it out for them. Profit.

This is how my program looks like:

Since this is a really simple program which doesn’t do much other than taking fullscreen screenshots, I decided to release it for free and call it “Easy Screenshot 1.0”. You can set the shortcut key (doesn’t support ctrl, shift and alt at the moment) and the name of the output folder.

Once you’re done with that, press the ‘Start’ button and you can now minimize the program as it will continue to track the keyboard events in the background. Whenever you press the shortcut key, a screenshot will be taken silently without any message balloon popping out.

You can download Easy Screenshot 1.0 for free, by clicking the button below:

Download (8MB)

LANManager Supports UNET

Surprisingly, the plugin I made for Unity called LANManager supports UNET out of the box. The plugin was made in last year, before Unity rolling out their new networking system called UNET, which is a complete remake from scratch.

LANManager is a Unity plugin that helps to propagate your Unity-based game throughout the local network and allows other clients to discover the game server automatically without the need to manually insert the server’s IP address.

The plugin seems to work fine without any modification to the code, except a small change is required for the sample project to run on the latest Unity – replace the Network View component attached on the character prefab with the Network Transform component and that’s it.

The reason why it still work is mainly because Unity didn’t change much of the abstraction layer, except the underlying architecture which is not exposed to the users. Event names such as OnConnectedToServer, OnPlayerConnected, etc. remain the same so it didn’t break any of the functions in LANManager. Good job to the engineers at Unity Technologies!

Reviving an old project?

There’s an old hobby project which has been in hiatus for several months now. The idea started as a series of character concept art I did back in 2010 for my final year project but for some reason it didn’t get chosen, so I decided maybe I could use it for my own game.

Few months ago, I created the character model in Blender and a friend of mine did the environment props in 3D Studio Max. I put them together in Unity and wrote some scripts to make the character move (run, jump, double jump, climb ladder, etc.) and even did a simple NPC dialog system. But that’s all, it’s been staying the same since then, as both of us were very busy with jobs and other stuff. Now I’m thinking maybe it’s a good idea to post it out on my blog so that I can remind myself from time to time that there is a hobby project awaiting for completion.

The game is a story-based, character-oriented adventure game with puzzle elements in its gameplay. Player will be going through the game levels to solve certain puzzles and achieve certain objectives, which slowly revealing the story and the relationship between the characters in the game. There will be several characters who are teenagers but look really weird with their costumes and behaviors. They live in an alternate universe which is very different from ours and player will be learning more about their world throughout the game. However, I have not settled with the details yet so there are much more works to be done.

Ignore the scaling in the last screenshot. The scaling wasn’t correct, I was merely showing my friend how the models looked like in Unity compare to what he saw in 3D Studio Max.

Need to squish out some time for this hobby project so that I can keep my passion in game development, as my current job is more toward software engineering rather than games.