Game Development Community

Reactions to crysis movies on gametrailers

by Phil Carlisle · in Torque Game Engine Advanced · 03/21/2007 (2:57 am) · 44 replies

I was watching the movies of the crysis toolset on gametrailers.com today. Thinking about the technology they have in there and really trying to figure out how TSEA would get to somewhere near that point.

Trailer One
Trailer Two

There are a few things that struck me as interesting:

1) Day and night cycle with shadows. - This is interesting because EVERYTHING is shadowed so clearly they have some method of allocating shadow buffer space thats quite effective. The shadows seem to allow transparency at least at the on/off level. The shadows are all seemingly realtime updated too. Although I saw some artifacting in far off viewpoints when he moved the camera quickly (to be expected).

2) Foliage editing - this one seems like a reasonbly simple thing, but he could place trees and larger foliage items by simple clicking on the ground, this would be a really simple feature to add to TSEA's toolchain and would make planting things much quicker I think.

3) Foliage generation - in one part, he shows the procedural foliage as well. This is based on terrain material and coverage values. So as you edit the terrain base coverage map, the foliage updates realtime too. So clearly we can discern that there is a single foliage coverage manager that reads the coverage map and distrubutes foliage appropriately (plus, allows batching and all that render stuff).

4) The usual terrain texture painting tools... natch.

5) An interesting sort of integration of voxel editing. Actually, we did that in worms 3d a few years back and it works really quite well. Basically its a simple marching cubes algo based around some volume elements. His sort of editing thing was quite nice (a ball that either adds or subtracts space). Dunno how they do the texture selection for it, plus there were some lighting issues inside the chunk he hollowed out.

6) When looking at the second video, there is ambient occlusion which seems (might be wrong) to be baked into interiors and other objects. Perhaps an ambient occlusion map for each object?

7) He showed a nice system that did visibility culling, basically it looks like its based off the "large occluders" technique (cant remember the paper thats in, but its well known), similar to the technique they use in that visibility culler thing the guys from sur-render did, goddam I cant remember ANYTHING!!).

8) Interesting simple camera path animator thingy with scrubbable timeline.

9) AI Actor class, with some kind of link indirection to the character, he called it "archetype", but yeah, basically datablock.. meh, datablocks.

So takeaways from it are:

1) Day/Night with "always on" shadows would be do-able. I dont really like the fact that shadows have to be tweaked so much right now. It seems like we should just have global options for shadows and leave it at that. Clearly it has implications, might mean models need a shadow geometry too?

2) Foliage placement by clicking on the heightmap - relatively easy to throw into TSEA as it is.

3) Foliage generation - Again relatively easy, would need to sample the map material and place foliage dependant upon it. if we relax the requirement that this needs to be editable ONLINE then I think it'd work fine.

4) Natch

5) This would require a fair bit of work to integrate, but the actual implementation is relatively well understood (marching cubes), it adds the opportunity for overhangs and caves without then requiring an editable mesh toolset, which means atlas for instance could go back to being a heightfield, which would simplify the toolset issues for atlas.

6) Ambient occlusion map, seems like it'd be easy to do a baked one, but I'd rather back in the engine with some regeneration step.

7) Interesting problem, but it feels like TSEA could use something here. Complexity wise, dunno, but its a well known issue and has had lots of academic research applied.

8) Pretty easy, Ben sorta prototyped something similar a good while back.

9) Again, pretty easy, main issue is updated pathing, no idea if they did that, didnt see any path gen tools in the demo's. Maybe once they release the game we can see how it works.

One of the interesting things really is the uniformity of things. I.e. uniform lighting, tools, access to parameters etc. Which kind of makes me thing that some kind of property system with variable reflection and interrogation would need to be in place before this system would really work. For instance, a script being able to access ANY VISIBLE PROPERTY of any other game object would seem to be required. Kind of like the properties editor, but a bit more robust and automatic. I.e. non crashy range checked and interrogation based.

Basically I think Cryengine 2 is kind of similar in mindset to the functionality that the original Tribes gameplay required, so its useful to compare the feature set (I can imagine trying to create Crysis using the T2 engine 10 years ago for example).

What say you? am I wrong?
Page «Previous 1 2 3 Last »
#1
03/21/2007 (5:16 am)
Quote:
1) Day and night cycle with shadows. - This is interesting because EVERYTHING is shadowed so clearly they have some method of allocating shadow buffer space thats quite effective. The shadows seem to allow transparency at least at the on/off level. The shadows are all seemingly realtime updated too. Although I saw some artifacting in far off viewpoints when he moved the camera quickly (to be expected).

They said they used a combination of dynamic lighting and precalculated lightmaps. Where either technique is used, I have no clue. If you look carefully in the sandbox demonstration (2) then you will notice how the trees update their shadows when the sun moves, but they do not when their ambient animation is running. Hint hint.

Quote:
2) Foliage editing - this one seems like a reasonbly simple thing, but he could place trees and larger foliage items by simple clicking on the ground, this would be a really simple feature to add to TSEA's toolchain and would make planting things much quicker I think.

TSShape (or TSShowShape) had some code (keepStuckToTerrain or similiar) which made the shape follow the ground when you dragged it around in the editor.

Quote:
3) Foliage generation - in one part, he shows the procedural foliage as well. This is based on terrain material and coverage values. So as you edit the terrain base coverage map, the foliage updates realtime too. So clearly we can discern that there is a single foliage coverage manager that reads the coverage map and distrubutes foliage appropriately (plus, allows batching and all that render stuff).

twSurfaceObject?

Quote:
1) Day/Night with "always on" shadows would be do-able. I dont really like the fact that shadows have to be tweaked so much right now. It seems like we should just have global options for shadows and leave it at that. Clearly it has implications, might mean models need a shadow geometry too?

This is really simple unless one wants to tinker with terrain and interior shadows and how they project. We implemented this a few weeks ago but decided not to make the shadows move because of video memory issues.
#2
03/21/2007 (10:58 am)
Actually, the shadows DO update when their ambient is playing. Or am I seeing something youre not :)

the tsSurfaceObject was kind of the right idea, just a horrible implementation really (from a usability standpoint).

What impresses me most is the usability of the build tools. Like the road editor, it just kind of seems "right" in terms of usability. I can see this doing really well as a sort of sandbox editor game environment.
#3
03/21/2007 (11:22 am)
www.innercircledev.net/garagegames/foliage.jpgwww.innercircledev.net/garagegames/rta.jpg
Quote:
Actually, the shadows DO update when their ambient is playing. Or am I seeing something youre not :)

In the first clip, there is either bad framerate or latency in the updates of the shadow.
The second one is smooth though :) Very nice. I wonder where they use their lightmaps though, and for what.
#4
03/21/2007 (1:18 pm)
Good thread Phil!

Quote:1) Day and night cycle with shadows
I don't know what the technique is for interiors, but for a sun like lightsource i'm sure they're using a technique similar to Parallel-Split Shadow Maps. I really want to spend some time implementing this for TGEA.
Quote:2) Foliage editing...
3) Foliage generation...
We're working on the Forest Kit right now for a May 2007 release (consider this the official announcement). I specifically didn't tie it to Atlas materials because of all the current difficulties with generating Atlas terrains. If Atlas was designed for and used realtime tools i would have done it similarly to how the Crysis team have.

Also the Mission Editor sucks ass... it is probably one of the biggest hindrances to integrating things like the Forest Kit into the mission creation pipeline. GG please let Justin and Adam loose on the mission editor... i would kill for a mission editor is easy and extendable as TGB's level editor!

The Forest Kit allows you to place Forest objects which will procedurally place elements based on items you define in script. Placement is based on all the typical stuff... min/max slope and elevation, density, etc. I'm also about to add a "mask" image which stretches across the Forest bbox. This mask can be used to further define placement of trees and mask out areas which need to be clear.

If time permits i will add a new fxFoliageReplicator like system that performs better for long view distances.

Quote:4) The usual terrain texture painting tools... natch.
5) An interesting sort of integration of voxel editing...
The data intensive nature of Atlas is it's biggest issue. If the tools can work around this, Atlas would be perfectly suited for this sort of stuff. Blender Atlas terrains are great and would work well with a painting tool and Atlas can do non-heightfield data... these are all tool issues.

Quote:6) When looking at the second video, there is ambient occlusion
I haven't looked into this stuff yet, but it seems to me you can go a long way by just darkening inner corners and not true ambient occlusion.

Quote:7) He showed a nice system that did visibility culling
It seems to be based on making visibility occlusion a first class feature of interiors and the terrain system. Still to me that feature isn't one that is that desirable... it still leaves you with the worst case performance problem when there isn't anything to occlude stuff in your scene. The framerate rules when i hide behind this wall... but if i go around it the performance sucks!

I would rather see better LOD and scene graph improvements to deal with performance than visibility occlusion.

Another thing was the road tool. There is no reason why this couldn't be created for TGEA today... just no one has taken the time to do the work.
#5
03/21/2007 (3:51 pm)
From Tom's link:
Quote:
Depending on the scene, this may be helpful in increasing shadow quality. The idea is to adjust the cameras near and far planes so that the frustum contains the visible geometry as tightly as possible. This way less empty space is rendered on the shadow maps. In the demo the far plane is simply moved to the farthest vertex of the bounding box containing the whole scene. This isn't very accurate but still makes quite a bit of difference when looking directly at the ground.

Interesting!
#6
03/21/2007 (4:07 pm)
Great news on the Forest Pack. Looking forward to that one.
#7
03/21/2007 (4:16 pm)
Yeah when the heck will it be released? I'll name my first born after you, Ben, if you release this soon. :P
#8
03/21/2007 (5:44 pm)
Tom:
Quote:The data intensive nature of Atlas is it's biggest issue. If the tools can work around this, Atlas would be perfectly suited for this sort of stuff. Blender Atlas terrains are great and would work well with a painting tool and Atlas can do non-heightfield data... these are all tool issues.

I think to be honest, I'm more convinced by this idea of using a simple heightfield and added voxels. The thing about atlas is that it has a lot of issues because its NOT a heightfield. So making it one would probably be a more rational approach. Keeping the same shader setup but just actually living with a heightfield and all that entails. Makes production of tools much easier.

Quote:Also the Mission Editor sucks ass... it is probably one of the biggest hindrances to integrating things like the Forest Kit into the mission creation pipeline. GG please let Justin and Adam loose on the mission editor... i would kill for a mission editor is easy and extendable as TGB's level editor!

I second that too. The TGB interface rocks in comparison. What bothers me a lot more than the interface issues, is the ease of which you can crash the engine by adjusting parameters. Type checking and range checking just... well, dont get done a lot of the time. I'm not sure exactly what the main issue is with the editor, because in theory its actually quite good. It does a level of introspection on the classes to get the editable fields, so why does it feel so clunky?

Quote:It seems to be based on making visibility occlusion a first class feature of interiors and the terrain system. Still to me that feature isn't one that is that desirable... it still leaves you with the worst case performance problem when there isn't anything to occlude stuff in your scene. The framerate rules when i hide behind this wall... but if i go around it the performance sucks!

Agreed, but I'm sure there is a case for doing it. Perhaps the occlusion check is relatively quick, or its hardware based or some such. It wasnt just "interiors" though, it was any large occluders.

I liked the way they had prefab destructable buildings too. How would that kind of system be implemented in TSEA do you think?

Personally, I'd like to see scene graph improvements and a bit more modularity creep into the engine design. But thats a long term shift.

Quote:Another thing was the road tool. There is no reason why this couldn't be created for TGEA today... just no one has taken the time to do the work.

Agreed, although when you have changing terrain systems and non heightfield based terrains, it gets a lot harder (how would the thing handle atlas's arbitrary geometry?).

One thing thats interesting also, which comes up quite a lot. Is the water transition at the water/terrain edge. Clearly there is a vertex shader there pertubing the surface, which is interesting. I'm really not sure how best you would implement the water/terrain intersection. My guess would be to extrude out a "fringe" from where the water and terrain intersect, but unless I can see what they do in wireframe, I'm not sure.

Hopefully I'll be able to get the game and run it on my test rig, then I can use 3dripperdx to capture the scene to take a closer look.
#9
03/21/2007 (5:46 pm)
Hey Tom, you mention having a foliage mask? Why not take the foliage mask from the atlas blended terrains blend value?
#10
03/21/2007 (6:20 pm)
Quote:I liked the way they had prefab destructable buildings too. How would that kind of system be implemented in TSEA do you think?
Seems from that and how they demonstrated that the buildings are built from a building block system are quite different from the traditional BSP + meshes for decoration that Torque/Doom/Unreal have been using. I'd like to know more about it myself, but it seems that it would require a whole new system and excellent mission editor tools to pull off.

Quote:you mention having a foliage mask? Why not take the foliage mask from the atlas blended terrains blend value?
Three issues...

One getting access to the opacity mask has some performance issues associated with it since due to Atlas's paging nature most of the high resolution opacity data is still on disk at any given time. This could be worked out, but my responsibility to ship this kit doesn't give me the time to make Atlas fixes.

Two what if your not using a blender terrain?

Three what if you need to mask something differently then how the opacity mask is setup?

The mask i plan to use with consist of a single 32bit image. You can draw into any of the channels and you can optionally associate any tree type to one or more of the channels. With a little code magic you'll be able to draw on and save your mask in Photoshop and regenerate your forest(s) in game to see the results.
#11
03/22/2007 (1:48 am)
I guess this brings up another issue and that is:

Why the hell do we have multiple options when it comes to terrain, if it means that by adding those options (of which there are flaws in each) we end up not taking advantage of useful memory saving techniques?

I understand Tom's requirement to ship and so his decision to use another mask texture. But it would have made a lot more sense to have this kind of thing built into the terrain system in the first place (because obviously terrain and what covers it are intrinsically linked).

I'm starting to get the feeling that actually the paging of terrain maybe isnt the best way of doing things. I know its great for geo-specific terrains that have to be very large. But for the vast majority of games, is this really the case?

Tom, what res is the 32bit image going to be? Or will that be selectable?
#12
03/22/2007 (8:16 am)
@Phil - Note that Atlas *could* support this... i just chose to not further complicate things. You can add additional textures to Atlas that are not used for rendering, but the process to do that is just about the same as Atlas file creation. And if we wanted to modify that map you have to rebuild the .atlas file.

What i plan to do is allow the user to assign whatever texture they like as the mask via a field from the mission editor. It can be whatever size you like... it will be stretched across the forest box.
#13
03/22/2007 (8:46 am)
Tom: Yeah, its a logical decision, given that its probably better to make the code itself not require atlas either.

You mentioned that we can modify which foliage is placed based on the RGBA values? how is that going to work? bit-fields, some kind of layer system encoded into the image?
#14
03/22/2007 (9:47 am)
@Phil - It's just a RGB/RGBA image... i treat each channel as a layer. The datablock for each tree type has a field that defines what optional layers to use as a mask during procedural placement. If no layer is specified it assumes it can place that tree anywhere.
#15
03/22/2007 (10:22 am)
Nice one Tom.

Does that mean it can have any number of tree types based on the mask image?
#16
03/22/2007 (10:48 am)
Atlas2 has a built in system designed specifically for storing this type of information. You can create TOC's for any data you want, and Atlas will stream the data of the disk just like it does everything else...
#17
03/22/2007 (10:53 am)
Stephen: yeah, we know. But as Tom mentioned, its a lot more complex than just sampling a texture (because it might not be there), so for him to ship the product on time, he cant use the atlas route.
#18
03/22/2007 (1:58 pm)
Not that i can't... just that i don't think it's the most productive route.

To use a special TOC in Atlas and allow an artist to edit the mask would take maybe a 2-4 minute turn around to edit the mask, save the image, rebuild the .atlas, and reload the mission.

With a simple image used directly from the forest object you just edit the mask, save the image, then call a special forest regen command from the running mission... maybe 20 seconds of effort. It's not as good as a built in live painting tool, but it's the next best thing... and certainly better than going the Atlas route.

This could be solved by improvements to the Atlas tool chain, but i don't have the time to solve any more of those for this project.
#19
03/22/2007 (4:10 pm)
Out of interest Tom, why not simply hook the API for changes to the mask file so that you dont have to run the command? Is there some reason thats not useful? I guess maybe cross platform compat?
#20
03/22/2007 (4:24 pm)
@Phil - I'll be posting a plan on the Forest Kit soon and maybe this discussion would fit best there. I don't want to hijack this thread... because i'd like to see more ideas on the other points you made.

But to answer your question... because regeneration of the forest is a non-trivial update to do at the moment.
Page «Previous 1 2 3 Last »