Manticore

More Tile Generation – Going Vertical

July 24, 2010

walltilegeneration 

I’ve continued experimenting with my tile generation code for my Manticore engine. I’m already quite happy with the way my ground tiles are coming along, and I feel confident that I can make them into something really useful, but I also wanted to see if I could use a similar technique for generating wall tiles. I want to make some games that takes the player not only down man-made dungeons, but also natural caves or tunnels carved through rock. I think it will be tricky to get it looking just right, but the initial results look promising (at least when you put in a few props and a character to distract the viewer a bit :) ). The technique is pretty much the same as for the ground tiles.

Tile Generation

July 22, 2010

tilegenerator

Being a programmer who only dabbles in art, I like tools that save having to do art work, so I try and generate things whenever I can. For my Manticore isometric engine, I would like to have nice looking terrain tiles, so I’ve started experimenting with code which generates a height-map, takes a couple of plain textures and generates an isometric tile with nice slope-based terrain transitions and lighting. There’s a lot of work left until it is finished, but initial results look promising :)

Isometric Engine Lighting Test

July 21, 2010

I’ve started to do some prototyping work on Manticore, the isometric 2D graphics engine I’ll be using for my Rage and Sorrow game. The prototype is built on top of my Pixie Game Engine, and I’ve been working on some rendering scripts for Poser (the art tool I use) which renders my objects in several different ways, so that I can use them to do some nice real-time lighting.

Here’s the result (and below it are the different images I render from Poser):
iso_lighting1
iso_lighting2

What I’m actually doing here, is rendering four images in Poser – one for the basic textures, or albedo, one for the facing direction (or normal) of each pixel, and two for shadows (one for the ambient shadows and one for the shadow of a fixed directional light source). These images are then stored in a much more compact format – albedo is palettized to 8 bits per pixel, the normals are stored with 8 bits for x, 7 bits for y and 1 bit for z (for a total of 16 bits) and the shadows are stored as 8 bits per pixel (though I’m considering dropping it to 4 bits per pixel, which might work ok). Each of these are then RLE-compressed, making for quite efficient storage.

When I’m rendering, I do a straight forward deferred renderer (but I do it in software – no GPU acceleration in this prototype, but it will be eventually) where I render the four RLE datasets to four buffers, and then perform (linear space) lighting in a separate pass (for now, I do two full-screen directional lights and hemisphere ambient lighting, but I’ll add support for point lights next), followed by a final pass of "filmic tonemapping" (yeah, I got that from this years GDC presentation on Uncharted 2 :P )

And I’m quite happy with the result so far – If you want to see what it looks like when it is running, here’s a download link:

Download lighting demo


(I won’t be able to have dynamic shadows with this technology, and I guess it does look a bit funny when the light sources move and the shadows don’t, but I think I can live with that…)