#### Archived

This topic is now archived and is closed to further replies.

# Outcast Engine

This topic is 5897 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

Does anyone remember the engine of the game Outcast. I guess, it was based on voxel technologie(?). In my view, the game looked awefully good for it''s time and even ran on an AMD 400Mhz. Maybe, the possible screen resolutions were not good as that much. But anyways, why did they not continue to develop this technology further. Isn''t it better than polygon based engines?

Success is not the position you stand but the direction in which you look

##### Share on other sites
It was a Voxel based engine and currently there aren''t and hardware accelerators that can accelerate voxes graphics and have good market penetration. Most hardware accelerators are optimized for processing triangles and planes wich makes this the predominant peridigm for graphics engines.

##### Share on other sites
The game ran at like 512x384 resolution, looked blocked (nature of voxels) and required the best hardware to run on at the time (which was around a P2-350). Now with a P4 2.0Ghz, you could probably get it running at like 800x600x32 and look pretty good. Doesn''t sound that great given the amount of processing a GF3 can do.

##### Share on other sites
plus modern graphics accelerators can display nowadays so many triangles that you can make your graphics damn smooth, so you don''t really need voxel engines. I think you could reedo Outcast today with a poly-engine and it would look better.

Yesterday we still stood at the verge of the abyss,
today we''re a step onward!

##### Share on other sites
This seems paradox. I mean, the engine ran quite good without any hardware support. Now, if the manufactorers would support the technology, this would (could have been) a big advancement for the game industry.

##### Share on other sites
Why not use voxels?

A - Most people like high-resolution polygonal graphics; they''re used to them.
B - It takes more time to get a good and eficient software engine running well
C - Outcast didn''t sell well

Why use voxels?
A - They are algorithmically efficient
B - They can run on lower-end hardware (nowadays)
C - I like the way they look
D - They''re something DIFFERENT!!!

In response to Draigan, when the Outcast Demo first came out, it ran on my PIII550 at 640 x 480 just fine. I will admit that it is com,putationally expensive. However, I disagree with your opinion that it looked bad. It was lower resolution, to be sure, but it had beautiful landscapes and very impressive water effects that are yet to be matched by hardware-accelerated games. Such effects currently require $400 graphics cards to do in hardware. You could redo Outcast today with a hardware-accelerated polygonal engine, and it would run at a higher resolution, but it would require a GeForce 3. Most people aren''t willing to shell out that absurd amount of cash. Those that are can certainly run the software engine just as well as a hardware-accelerated one! #### Share this post ##### Link to post ##### Share on other sites But you have to admit that your P3-550 was super highend at the time that outcast came out. The game itself looked very good indeed but it did suffer from the natural blockiness of the voxel engine. But I will admit that it did look very good at the time. But look at Outcast 2. That looks much better and it uses polygons. I think the guys that did the game would have made it look just as good with polygons as voxels. The only reason I think they didn''t go the polygon route was for the simple fact that they invested so much time (years) researching voxel tech that they wanted to use it in an engine. #### Share this post ##### Link to post ##### Share on other sites Hey, however, the WATER in Outcast is the BEST I have ever seen!!! I mean the realistic movement (not only flat water with some alternating texture), and the light reflections, depending on the angle the sunlight is shining on the water, and the angle you look on it, the reflection rate altered from 0 percent to 100 percent, the less, the more you can see through, and not only the angle of the entire water surface, the "angle" of some curved parts (waves) of the moving water. Well, there are some games which have partial reflecting water, but (all I''ve seen) look like crap compard to outcast. (if you give water a bit of twinkeling, this is not realism) And, hey, I buyd that game this year, for$5,- or so,
it''s old, but man, it DID impress me.

(I don''t know how it is in other translations, but the
German version of outcast had some mis-translations
in the options menu. "Mittel" (mid) was the best detail
level for every option, so, if some people didn''t realize
this, they''ve never played outcast with best detail.
I think the "native" version is french.)
)

##### Share on other sites
You''re right Draigan, my PIII was top-of-the-line back then. But nowadays, at least, it''s quite low-end. So most hardware can run a good voxel engine. That was my point.

And I DEFINATELY have to agree with the Unshaven Bastard. I only alluded to the water, saying that you''d need a GeForce3 to do it in hardware, and I''m glad someone described it. It is simply incredible.

It kind of makes me sad that such a game can only sell for \$5 in the bargain section. If I could just find a copy of that game, I''d buy it!!

##### Share on other sites
The water is really unmatched, I havent seen any game that matched this quality!

Yesterday we still stood at the verge of the abyss,
today we''re a step onward!

##### Share on other sites
http://www.outcastii.net/

polygonal engine.

-* So many things to do, so little time to spend. *-

##### Share on other sites
If you ask me, the beauty of Outcast did not just lay in the water fx, or the nice sky, the beauty lay in the fact that it felt alive.... I mean the feeling of running around in the city in the desert and having people all around you, talking, walking, carrying stuff and all the background sounds. That is truly what made Outcast stand out.
I really hope they won''t change that in Outcast2.

(Sorry, if this was a bit off topic, but Outcast is one of my favorite games and I tend to ramble about it...)

##### Share on other sites
Indeed the most interesting feature provided by voxel-based terrain engines was not the rendering, but the very straightforward way of providing a point-of-view dependent sampling of the terrain, that is obviously the most important problem to solve when dealing with "non-quake-like" FPS 3D engines...

In fact octree-like approaches try to apply quake-like geometry-hiding techniques to get rid of the non-viewable geometry, even some of them provide several LODs for every octree reticle in order to simulate that point-of-view dependent sampling, but then you have to deal with geometrical discontinuities and navigation smoothness.

So why not to apply the voxel algorithm to sample the terrain in a view dependent way and then render with triangles?... although it requires a lot of computation per frame, since all the geometry has to recomputed, and that has a very negative impact into the HW accelerator performance, because all the vertices have to be reloaded every frame. But since right now we have access to almost everything on a NVIDIA accelerator, it''s some kind of thing that could be implemented using the vertex shading assembly providing that you had also access to the texture memory, and perhaps it''s being implemented by someone as I''m writing this...

Check glvelocity.com for more funny ideas on terrain engines, those guys are really cool.

Regards

Matt

##### Share on other sites
Great minds think alike, Matt da Monkey! Voxel wavesurfing algorithms provide real-time view-dependant LOD and occlusion culling. You can easily use triangles to render terrain this way!

There''s an unoptimized hardware-accelerated voxel terrain engine here: http://www.flipcode.com/voxtut/voxtut-hw.shtml

I''m sure that, with an algorithm designed specifically for hardware-acceleration, you could get some nice framerates.

##### Share on other sites
Thanx TerranFury... what a nice shot at the end of the article, it gives a totally cool idea of the topic!!!

The only doubt I ''ve about the posibility of bringing it to the accelerated thing is if when programming a vertex shader with the NVIDIA thing you can access to the texture memory as well and use the HW interpolators to do the heightmap interpolation for every sample... I just know the standard OpenGL extension, EXT_vertex_shader, and as far as I know that''s not possible...

Matt

##### Share on other sites
I haven''t been keeping up with the whole pixel/vertex shader thing, since I have a TNT2, so I can''t really comment on that last post.

I have had a rough idea of how I would want to do a hw-accelerated voxel engine, but I''ve never seriously attempted any of it.

There are generally two approaches you can take when wavesurfing. You can follow each ray to the end (depth-first), or you can iterate through each ray, stepping forward each time (breadth-first). My idea was to trace a ray all the way to the end, depth-first style, increasing the step size with distance such that all verteces are essentially the same distance apart when projected onto the screen. Create a list of these verteces. Then do the next ray. Create a triangle strip, alternating between the current list and the previous list. Do this for each column on the screen. Since you have to transform in software anyway, use an ortho projection matrix and place screen-space points in it. Maintain the correct z-values to write to the depth buffer, but don''t bother doing z-tests. Then draw any dynamic objects, with z-testing. For faster machines, decrease the width of each column and the step size to increase the resolution of the mesh.

Also, when casting the rays, don''t use the nearest heightmap entry; use map(x, y), where map is an interpolation function of some sort (probably bilinear).

That was my idea. I don''t know how well it would work. It does leave some things to be desired, though.
- Reliance on the z-buffer for writing all dynamic objects will decrease depth precision of those objects dramatically on large terrains.
- Texture-mapping will not be perspective-correct. It will be affine. Considering the size of the polygons, though, that shouldn''t be a problem.

##### Share on other sites
The strip construction its quite straightforward, providing you can sample the same number of vertices per column, and that is not trivial when dealing with heightmap boundaries, unless you do some "wrapping around", that can be not desiderable... but however it can work...

When texturing I think of a planar mapping paralell to the heightmap, so the z component in the texture function ((x, y, z) -> (u, v)) gradient is zero, then you don''t have to take z in account when trying to guess the texture coords for a sampled point, because a bilinear interpolation of (u, v) over (x, y) will work perfect, and no worries about perspective correction :-)

The Z-buffer thing is always a problem... so clamp it!!! if you have a distance cue for the dinamical objects, and since you son''t need the z-buffer for the voxel thing, clamp all the surface sample values further than that cue to the far clip after projection, so they will be rendered with their correct projected x and y but with a tweaked depth that will make them not to be clipped (this is possible to do in a vertex shader since you have access to all the vertex proccessing). That should allow you to get the best z-buffer resolution for your cue...

Your map(x, y) function could be done using the HW interpolation functions over the texture, but to do it in NVIDIA assembly you''ll have to have access to the texture itself from your "NV program"... I don''t know if that is possible, I could ask my supervisor (I''m a PhD student :-)) who has done something with it, perhaps he knows...

Regards

Matt

##### Share on other sites
If you go to the Nvidia website and search for "voxels" there is an article called "elevation maps" that tells how to render voxels with hardware,basicaly it draws a semi transparent polygon and looks at the height map and with alpha test only draws the pixels on the current height it then renders another polygon over that and another.... until it builds up a voxel object from just a height map and texture.

##### Share on other sites
Thanx a lot for the tip, tron2, however that is a texture trick (quite smart, by the way, but isn''t NVIDIA original), and as you may see we are trying to get geometry from it, using the vertex shading thing...

Thanks again

Matt

##### Share on other sites
Hmm. Outcast only runs at 320x240 on my machine and it looks better than polygon games with 2x the resolution.

My favorite bit was in the training area (snow) you left footprints in the snow. Sure, they went away for after a while, but it was deformable ground terrain. Impressive!

##### Share on other sites
I just had a look at that hardware heightmap thing on flipcode, and while the screenshot looks great, when I actually ran the demo, it was pretty unplayable. I mean, it ran fast enough, but as you turn your head, all the terrain points wave up and down as the sampling moves from point to point. It''s sort or hard to describe, but basically it looks like there''s ripples in the terrain.

I''m certainly no expert on this, so I was wondering if you guys knew of how to remove this rippling? Is that what the map( x, y ) function does? I don''t see how, because the height of one point would still move up and down as you turn your head. The only way I can think of removing it is if you shoot rays out in a direction-independant way (i.e. always shoot rays in the world-space direction, no matter which direction your head is face (but only shoot them in direction you''re looking...) - if you get my meaning), but even then, you''d still get it when you walk around...

codeka.com - Just click it.

##### Share on other sites
Voxels are probably best suited for things other than rendering, such as Collision detection, world deformations, and pathfinding. It would be cool to see someone implement a polygonal engine that uses some of the other features of a voxel engine.