-->
Recent Projects:
Current Project:

Exceptional Journals (in no order): [Eliwood] [Steve Healy] [Ravuya] [Mark the Artist] [Scet] [Ysaneya] [Mayan Obsidian]
My Personal Website
 Cyberspawn video! |
Posted - 6/14/2009 7:40:45 PM | I know I'm going to get some guff for it, but I was only able to get this video in MP4 format, which YouTube didn't seem to like. 
Regardless, take this opportunity to see Cyberspawn in motion.
EDIT: It looks like my YouTube attempt succeeded. Click here to view.

New since my last entry is the ability to pick up and throw away items, as well as a fairly attractive marble floor texture. Presently the only manipulatable item in the game is the Nuratech Pistol, so that is showcased in the above video. As you'll be able to see, the physics is entirely based around axis-aligned bounding boxes (AABBs), but looks reasonably decent. I'm feeling a little torn as to whether I want to take a stab at integrating a physics library. Anybody have any experience they'd like to toss in about that?
That's all for now. Hopefully coming soon: working doors. 
| |
 A month!? |
Posted - 6/11/2009 9:10:50 PM | Has it indeed been an entire month since my last update, dear journal?
So it has.
This month has been an utter whirlwind for me, in terms of both work and that elusive real life. Nevertheless, I've still been pumping in some work into Cyberspawn here and there whenever I can. The most notable additions lately have been in the form of content; models, textures, and so forth. The engine is far enough along now that I'm getting interested in starting to make the game look less threadbare overall.
The current state of things is something like this:

A very refreshing change of scenery from the strange cold surroundings of old. Texture quality still isn't up to par with my ideals, but I'm fond of the new hanging light and door models/meshes that you can see in this shot. Maybe a painting or two to hang on the walls here would give it a little more spruce. We'll see. 
Back to the coal mines!
| |
 The greener side of Cyberspawn. |
Posted - 5/10/2009 10:31:15 PM | Over the course of Cyberspawn's development, I've been slowly trying to create more and more models in order to both improve my proficiency in the 3D arts, as well as fuel the natural demand for content that any game requires. I present: a potted plant.

A notable improvement is that I've now figured out how to use 'texture baking', which will go a long way in improving future models. Simply said, texture baking is the technique of applying numerous lighting and material effects to an object within a 3D editor -- Blender, in this case -- and 'baking' those effects onto a texture, which can then be applied to the object in real-time inside of the game. The shot on the left shows the baked model with only ambient occlusion calculated. This effect alone adds a great deal of subtle realism in the lighting.
The other significant feature implemented is a secondary lightmap, termed the 'actor lightmap' for the time being. This lightmap is generated across the non-solid areas of the level, and functions as a way to apply shading to actors that move around the level in and out of the path of lights. The player's weapon overlay also is affected by this, and can be seen (subtly) in the second screenshot.
It's easy to get caught up in small things like these, but I've learned that it goes a really long way in making a game look and feel better in the end. Probably the biggest lesson I've learned in computer graphics (and indeed game development in general) is the huge difference the accumulation of those subtle additions make.
| |
 Holy hitboxes! |
Posted - 5/7/2009 10:42:11 PM | So, once again I am back doing my co-op term at Sony Creative Software, a subsidiary of Sony way way off in the forgotten Canadian city of Waterloo. Tomorrow will be the last day of my first week, and quite a busy week it has been! The product we are developing is called Media Go, a media management application somewhat comparable to the famed iTunes. It's to be shipped with Sony Ericsson phones world wide in the very near future.
The specifics of my current task are of course NDA'd, but I can at least say that it's an interesting mix of application and UI programming. I'm not really a UI developer at heart, so while it's a bit of a strained relationship between me and my code, I'm managing. Working on the massive codebase they have never fails to motivate me to work on my own game projects. 
And on that note...
Cyberspawn Update
The most recent items have been improving collisions and getting the inventory/item groundwork underway.
Collisions with the world work wonderfully, but collisions with entities was only sort of working. I had to manually define the sizes of the collision bounding boxes within each entity's definition file, and rotating the entities would bork up their bounding boxes. It was only a matter of adding some code into the 3DS model loading code to have it determine the minimum bounding box for the model.
Since I had decided on keeping collision logic simple, I wanted to stay with axis-aligned bounding boxes. This meant that when an entity was rotated (ie. rotating a desk 45 degrees in the map editor) it needed to have its bounding box recalculated to reflect its new (larger) size. This is accomplished by using rotating the four points of the bounding box (either top or bottom; doesn't matter since rotations are on the Y axis), and then finding the bounding box that contained those four rotated points. It can be kind of nasty though, since 45 degree rotations on long models (like desks) feel larger than they should. Short of rejeffing the physics code to support more complicated collisions, I don't have any other nice options.

The other major addition was the player's ability to highlight a nearby item or object by looking at it. The effect of this draws a simple little stippled bounding box effect (reminiscent of Deus Ex 1 and 2) and displays the item's name beneath the crosshair. Next, of course, is the inventory framework behind it that lets the player legitimately pick up that item. 

| |
| Wednesday, April 29, 2009 |
 Pictures tell stories. |
Posted - 4/29/2009 10:14:42 AM | After a nice visit back home, I'm back in Waterloo and getting ready to start my next co-op work term this Monday. I'll be returning to Sony Creative Software, a smallish subsidiary of Sony that focuses on multimedia related apps. Heard of Media Go? [Probably not, but] That's what I'll be working on once again this term, striving to boost the overall awesomeness up another few notches. 
As for my own projects, my efforts have been focused on more adventures in 3D modeling. More specifically, trying to create a decent handgun for Cyberspawn so that I have some material with which to test items, inventory, and of course weapons fire.
   
For the curious, the hand was most certainly the harder of the two models. In particular, trying to rig up the bones and wrap the fingers around the gun model in a way that looked good was especially challenging. I'm not 100% satisfied yet, and I will almost certainly redo the hand and its grip on the gun, but it's a passing grade for the time being.
Until next time, devout readers.
| |
 Further isometric pursuits. |
Posted - 4/18/2009 12:19:24 AM | Between studying for final exams and other diversions (such as the lovely weather), I was in the right mood to sit down tonight and produce a few more pieces of art for my little isometric game project. A couple of new walls (with and without a light), and a grainy wooden floor.

I'm still generating the wall/floor images using Blender, and then using KolourPaint to chop that final image up nicely and do any final touch-ups. The overall process for creating a new tile still feels long and tedious, so I'm becoming very keen on writing some scripts to automate some aspects.
All of the game content works through a definitions system, which simply reads a text file containing text like the following:
[TileDef]
name=Brown Wall Lit
type=Wall
image=wall_brown_lit
base-x=29 # x/y location in image of where the base of the tile is
base-y=86
offset-x=16 # x/y/z offset in world coordinates of the tile
offset-y=0
offset-z=4
flip=true
index=4
Most of it is probably self-explanatory, but the jist is that the game will read in these tile definitions from the file and create an internal representation. The base x/y specifies where in image coordinates the centre of the 3D object's base is. This is used to ensure that the image is drawn in the proper place. The offset x/y/z are in world coordinates and specify an offset for the tile or object. For example, an object like a mounted picture frame might want to be offset upwards in order to appear to be hanging on a wall. The other item of interest, 'flip', denotes whether the game should generate a second entry at load-time containing info for a flipped copy of this tile. Since walls can be aligned in one of two ways (look at the screenshot carefully..), this prevents me from making flipped copies of every wall by hand. I'm not totally satisfied with my solution to the flipping problem, but it works for now.
As I've been creating tiles, I'm getting a better and better feel for where I want the art direction to go. Heavy influenced by the Crusader games and System Shock, I'm interested in taking a mix of industrial, mechanical, and office-like decor. Perhaps the game will take place in some sort of large mysterious complex.
Finally, for anyone curious, the last screenshot I took of my workspace for the project looks something like this:

| |
 author++ |
Posted - 4/5/2009 8:50:19 PM | Thanks, GD.NET
Just the other day I received my copy of "Advanced Game Programming: A GameDev.Net Collection" from the publishers. Several months ago John Hattan approached me with interest in adopting my metaballs article into their book. Naturally I was quite thrilled just to be able to see my name in print, but they ended up also offering a small but generous work-for-hire payment as well. Thanks guys for making me a part of this!
A Very Isometric Journey
My initial burst of interest in Cyberspawn has once again dwindled since I finished implementing lightmaps. My main quip was that making content that looked good in-game was very difficult, since creating a in-game model is a matter of modelling the object, creating a texture/mesh for it, applying it properly onto the object, and then trying to get it to look as nice as it did in the editor in the game engine. Given my inexperience in artistic endeavors in general, it just felt too far beyond my abilities.
However, I was still really keen to expand my artistic horizons. I had been using Blender all this time, and I've been getting pretty comfortable with it. Remembering all of those wonderful games like Diablo, Fallout, or the Crusader series, I considered the (hopefully) simpler task of producing pre-rendered isometric art for a 2D game instead. So far, so good; I have the basics of the art and the engine started.

The floor and wall didn't take too long to make. The hardest part by far was getting the camera set up at a consistent and correct isometric angle, generating the renders in a size consistent with world scale, and then adding final touches to the final renders to make them interlock with eachother in an aesthetically-pleasing manner. I really like the way it turned out, and am confident that I can maintain an art style of this level for the rest of the needed content.
More about this new (again!?) project and its direction soon. Maybe I can take a page or two from O-san's delicious isometric work.
| |
"Good night, Monster Land."
"Good night, brave warrior."
|
| S | M | T | W | T | F | S | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | |
OPTIONS
Track this Journal
ARCHIVES
June, 2009
May, 2009
April, 2009
March, 2009
February, 2009
January, 2009
December, 2008
November, 2008
October, 2008
September, 2008
October, 2007
September, 2007
August, 2007
July, 2007
June, 2007
May, 2007
April, 2007
March, 2007
February, 2007
January, 2007
December, 2006
November, 2006
October, 2006
September, 2006
August, 2006
July, 2006
June, 2006
May, 2006
April, 2006
March, 2006
February, 2006
January, 2006
December, 2005
October, 2005
September, 2005
July, 2005
June, 2005
|