Showing posts with label Voxel. Show all posts
Showing posts with label Voxel. Show all posts

Saturday, 7 November 2009

Atari Owl Project at €-Jagfest 2009

Well, the €-Jagfest in Kaarst is over or nearly over now, the attendees have had a chance to see what we hoped they would. I'm therefore going to post some screenshots of what was hopefully seen (barring technical glitches), and hopefully also give those of you unable to attend an idea of how the engines are progressing.

First of all there was an improved version of the poly/voxel engine seen at JagFest UK. This included an improved version of the lighting engine and an improved terrain following control system as well as using some more of Raven's textures.



In this demo, at Starcat's suggestion, the figure was turned around to provide a more interesting focal point so if anybody wonders why she's facing towards the camera and gliding around backwards - this is the reason. In the final game all the figures will of course be animated and facing in the correct directions.



This was followed by a demo which should be new to everyone and I hope would have been a very pleasant surprise.

After all, what use is a poly/voxel outdoor engine if you can't go indoors? - So here it is!



I have to say I'm thrilled with how Raven's floor, wall, door and window textures have worked.


In this final shot the figure appears to be levitating because although the camera has been tilted only the matrix affecting the world view and not the figure has been modified - eventually of course both matrices will be changed and the figure and world will rotate appropriately.



I'm very happy with all Raven's Textures here, but I have to say the capture card has not done justice to her glorious Stained Glass Window texture which, to my mind at least, looks better on a real Jaguar.

I very much hope that people will feel the wait for €-Jagfest has been worth it in order to see the revised and improved engines.

All the Best
Joe (Atari Owl)

Sunday, 6 September 2009

The Crash of '06

So - what happened then?

Well we had a merged voxel and polygon 3D engine, that worked for a while at least, OK to demo, but not to play.

Then it happened :(.

The virtual Hard Disk I was using to use the Jag Tools on a Modern PC OS - VANISHED?!.

To this day I still don't know how that happened, one day the file was there, the next it was gone. For a while I wondered if my virus software had quarantined it or something but it didn't. We've since had further problems - but a fairly strict backup-regime has been implemented so there should be no more frights like this.

Now I did have back-ups (after I'd lost 2 Real HDs on my Falcon in 1 day - I DID do back-ups) , but I'd got complacent, and not done them as often as I should, so we had CD backups for quite some time before and the redo files locally, I thought it would be OK.

I was mistaken, retrieving the data from the redo files proved very tricky. I ended up extracting all the ascii data I could and putting them into big files and slowly whittling them down to the most up to date version I could reconstruct.

It almost worked. We had almost complete files, the only parts that didn't seem to work anymore were the interrupts (when a component in the computer, for example a timer, can cause the current program flow to be interrupted and jump to another piece of code to deal with the situation before returning to the normal flow). Now Atari had suggested in one of their developer docs that the way to keep the Blitter (the processor in the Jaguar used to copy textures or draw shaded polugons) busy was to form a stack of commands, and just load them into the Blitter each time it finishes itscurrent operation, so thats what I tried.

  • Writing the Blitter data to a stack
  • enabling the Blitter Interrupt so that as soon as it finished its last operation it interrupted the processor in which the data was being prepared. In this case it was one of the fast RISC chips, the Graphics Processor Unit (GPU), which then picked up the next values stuck 'em in the Blitter and went back to its work.

Now this is great if all you have is large gouraud (a method for providing smoothly shaded polygons) or unshaded textured polygons, but if you have small polygons, the overhead makes it a false economy.

Oh and sometimes JUST sometimes it can mess up a load/store command (to read or write values to/from meory).

And guess what? If it messes up the wrong store, everything can freeze. So I did a quick re-write of the interrupt part of the engine and gained a not inconsiderable amount of performance (perhaps 30% more polys/sec with small polys).

At last... some GOOD news.

It still wasn't fully stable in other respects but the freezing problem was GONE ... so off I toddled to JagFest 06 in Warrington. Where it promptly refused to load from CD and so everybody there at Warrington, sorry but you saw the '05 version again.

What would you have seen? - well it would have looked a little like this.



Did it just get dark?

The Head Up Display (HUD - the buttons, life bars, map, etc) is merely a placeholder and has already been replaced, but it might provide a hint at the kind of experience (obviously reduced in scale) that we'd like to achieve.

Cheers,
Atari Owl

Friday, 4 September 2009

A Start

Hello Everyone

Well I guess its finally time I made a start on telling people about the homebrew project.
Some of you may know I've been around the Atari scene for a while, firstly with the Falcon and CT60, and then the Atari Jaguar (Atari's Last Gaming Console), but keeping rather quiet.

I started coding the Jag a few years back but didn't really know what I was intending to do, I knew I wanted to do 3D but that was about all. I therefore began thinking what kind of graphics engine would be suitable. In coding parlance, the graphics engine is the part of the computer code which determines what is to be shown on the screen, in a 2D program this will be layers of oimages, in a 3D program this will be geometric objects transformed via perspective calculations into images suitable for display on a TV or monitor. In modern game developments these sections of code, these "Engines" are often licensed from other devlopers, you will frequently hear for example that a game is based on 'the Unreal engine'. This means that the major part of the code determining what will be displayed is a licensed version of that contaned in the game 'Unreal Tournament", theree are also many other examples. For the Atari Jaguar there was example 3D supplied to official developers, but when I began coding i did not have a copy of this, and so I began to write my own.

In the end, impressed by Phase Zero on the Jaguar, I started on a voxel engine (from scratch) - for those unfamiliar with the term, Voxel is short for Volumetric Pixel, I could give a lot of background but the essence that you need to know is that it's an extremely efficient method for displaying convincing, shaded, rolling landscapes such as that shown in the attached screenshot.

Shortly after that I began coding a 3D polygon engine (also from scratch as I had not seen the Atari demo code). The Polygon engine is what current gameplayers will be most familiar with, essentially it is a section of code which uses a large number of geometric shapes (usually triangles) to simulate the shapes of the objects, characters and vehicles seen in the game world, it will simulate the direction of light on these objects and their ability to reflect this light, it will also draw pictures onto these, to give them texture, which may be skin, or rock, scales or hair, bricks or slime, anything the game producer desires.

For a while both pieces of code (engines) ran entirely separately, but I demo'd the voxel engine on its own at JagFestUK in Rochester in 2004. Finally the polygon code was added to the voxel engine and they merged successfully in time for JagFest 2005. I'm attaching a picture of what was shown then, including a coloured voxel landscape, fogging and a whopping big textured triangle in the foreground poking out of the voxel landscape.



I hope this finally starts to answer a few of the questions that people have been asking about the project and as time rolls on (and depending what we show at JagFest this year) I'll talk about it some more.

Cheers,
Atari Owl