February 2010
26 posts
WatchWatch
I haven’t posted something for the last couple of days because I was too busy with coding. Here’s a video in a far more progressed state in comparison with the last one. The level is an automatically generated maze using the depth-first search algorithm. By increasing the size and changing the theme of the graphics, any kind of maze-based levels can be generated such as dungeons. Note...
Feb 20th
18 notes
Collision and rotation again, skinned mesh...
While I’ve mentioned in my previous posts that I’m trying to avoid complexity so I can succeed in having a playable demo game fairly soon, there are some things that after all can’t be avoided. While working on solutions for a serious physics bug, I’ve ended up having a rotatable world that actually works with the current AABB collision model. Still that was not enough to...
Feb 17th
15 notes
AI, alteration in physics and camera
I have been doing some research the last couple of days, especially on the AI of my game. Since I haven’t ever done any real AI before, I need to gain at least the basic understanding of it. While the AI system structure that I’m going to follow is the one found in AI Game Engine Programming by Brian Schwab, I have also been reading the detailed presentation of AI algorithms...
Feb 16th
2 notes
Bugs, bugs, bugs
Getting things working doesn’t mean they will work everytime. That’s how I’ve spent the day while trying to fix bugs here and there - and in fact there are still a lot. These bugs occur not because of problems in the code but rather in the design or the logic of some problems. Collision response is now bug free and works fine for the current situation but I really don’t...
Feb 14th
2 notes
Moving to basic game mechanics implementation
After finishing the basic physics, I’ll move on to implementing some of the game mechanics such as firing and Entity characteristics (hitpoints, experience and such) of my game. That will allow me to start implementing the enemy mechanics and do some AI tweaking which I expect it to be the hardest part of this prototype, maybe even of the whole project. This will also give me the chance to...
Feb 14th
2 notes
WatchWatch
So, here’s the outcome of the past few days working on collision detection and response. In games, usually the player is not trying to go through the wall, it’s most likely a touch by mistake, meaning he’s pressing two directional keys at the same moment. Zeroing the velocity towards the wall direction and leaving the rest intact allows for smooth gameplay. Jumping onto the...
Feb 13th
1 note
The collision monster
Yesterday I took the day-off from programming and I’ve gave the collision-related part a deeper thinking. As I’ve said on my previous posts, collision detection and response is not a joke. While I’ve managed to build the rest of the engine in less than a week I knew it would take some good amount of time to get this right. When physics and maths come into play things start...
Feb 13th
OBB brings back feature-creep nightmares
After spending all day yesterday implementing collision detection using oriented bounding boxes (OBB), I woke up this morning and started thinking if it’s really that necessary for my game. The practical difference between OBB and AABB (axis-aligned bounding boxes) is that AABB remains static on rotations and therefore you can’t have rotated collision checking on your objects. The...
Feb 11th
Collision detection structures
Everything has been going quite smooth up to now but here I’m running to the first problems. The complexity of my code has raised a lot after adding the physics in. The problem is not making things work but maintaining and accessing all the required data in a logical, efficient and safe way. A very important point is always having the understanding of what exactly is going on, meaning what...
Feb 10th
1 note
Basic physics and control system implemented
As you can see on the video below, today I’ve been working on the basic physics components such as applying forces on objects and the main control mechanism for moving things around. This involved a rather large structure of classes allowing for a flexible modular system. I’ve also added support for the xbox controller which feels much smoother to play with. The engine’s...
Feb 9th
2 notes
WatchWatch
After the long theory explanation on yesterday’s post, here’s my engine running some of the basic physics in practise. I’m not moving the box around by straight adding to its position. In fact I’m “pushing” it around by applying various forces on it. The friction on the ground is stopping it from moving forever and the gravity pulls it back down after jumping....
Feb 9th
Basic engine components completed, planning the...
Today I’ve added the final touch to the basic engine components including some extra debugging information like rendering the hierarchy of the scenegraph on the screen and a few tweaks here and there. The engine is now at a state were I can start coding some gameplay elements and slowly evolving the physics and the AI. Physics When it comes to game physics it all comes down to one thing:...
Feb 8th
Camera completed, runtime type information added,...
Today I’ve completed the camera functionality for the game. At first I’ve coded everything using the DXUT cameras but after a while it started looking like a bit of over-engineering so I just did it my own way - which is the same thing but using the logic I’ve used throughout the rest of my code. The cameras are inserted in the scenegraph and can be easily manipulated from...
Feb 7th
Renderers, Resource Manager done. Entity Manager...
In my engine’s design, an entity by default, when inserted to the scene will be processed normally but nothing will come out on the screen. The renderers (called drawers in my engine) are individual modules that can be attached on any entity and are responsible for visually expressing the entity’s data. How that data will be represented on the screen is up to its drawer. For example a...
Feb 6th
Feb 6th
Unicode support sorted & better low-level...
Except than improving the debug information rendering performance by tweaking how the formatted strings are actually converted, I’ve added unicode support to the engine. Since the game is going to some Korean and probably some Japanese developers, I thought it’s a good idea to implement the unicode support now. My plan is to translate the demo to Korean and Japanese and unicode was the...
Feb 5th
Statistics, DXUT extensions & Boost support added
I’ve decided to make it good and it took me a whole day to create a nice interface for printing out debug information, on the screen, on demand from wherever you like. Some might say what? why? There is always “cout «” you could use! Yeah good luck trying to track the position of an object at the command line… I had all the nice functions already in place but the...
Feb 4th
areiadne2 slowly becomes reality!
The integration with DXUT is now complete and I can say I’m pretty happy to have all that well built infrastructure in my fingertips. A stack-based game states management system was also coded into the engine and everything is nice and clean by using the three interfaces I’m always using (Renderable, Dynamic, Inputable). Device control, Timers and such are all part of DXUT. Of course...
Feb 3rd
Building on DXUT
DXUT is to DirectX exactly what GLUT is to OpenGL. A basic framework that simplifies the initialization and control process of the library. It’s made by Microsoft (no MS jokes here - the DirectX team actually rules) and therefore it follows the official way of how a DirectX applications should be, meaning that by using it you have all those safety and checking during DirectX initialization. ...
Feb 3rd
Failed with the old version, re-writing a new one
I’ve spent some time writing the basic level creation functions but unfortunately this version of the engine is way too old and everything is really messed up to properly work with. Since this version was just an upgrade on top of the Titan Explorer codebase the engine follows the old design when I’ve been using much better designs on the more recent versions. The problem is all these...
Feb 2nd
Started with the gameplay prototype
I’ve set up the project for the gameplay prototype by converting an older assignment done in DirectX. This is the most recent version of my engine although it doesn’t include the particle-engine component. My particle engine is actually developed for my final year project based on the same engine but in OpenGL so it can be easily ported later to the PSP. The initial design of the...
Feb 1st
The game's audio
While the audio in this game is not of great importance (since I’m not demonstrating my audio programming or music composition skills) but it can help into significantly boosting the feel of the game and therefore making it look more professional. To achieve that I’m going to use OpenAL library, one of the best available solutions for games audio, used by major games such as Unreal...
Feb 1st
Feb 1st
Prototypes
Even for such a small project programmed by an individual things can get really complicated when trying to implement everything on one go. While the game idea might sound simple and solid there is always the need to test the gameplay and perform some initial tweaks to the technical structures without messing up the final code. In addition it’s my first time using the RakNet library and...
Feb 1st
Feb 1st
Basic gameplay mechanics
Character The player takes control of a powerful Mesartian Hero. The player can choose between three different genres which lead to different availability of weapons and combat techniques. Essentially it’s the classic Warrior (short-ranged powerful attacks), Rogue (long-ranged less powerful attacks) or Mage (long and short range less powerful attacks) selection. There will be no class...
Feb 1st
January 2010
2 posts
The game's background storyline
The Mesartian story is actually just a tiny part of a huge story that involves the creation of our current universe and a whole series of powerful beings (gods) and the wars between them. So I will try to make the long story short by quickly explaining the basics. Mesartians were created when their ancestors were near extinction because of the war with a more advanced civilization. In order to...
Jan 31st
Introduction
I’m a final year student  in Computer Science with Games Development at University of Hull. Back in 2006, when I’ve programmed my first demo game (Titan Explorer, a Descent-clone) it helped me getting a few interviews around some developers in UK. It wasn’t something special but it was enough for demonstrating my programming skills during that period. Almost four years have...
Jan 31st