Jump to content

Recommended Posts

I have been giving some thoughts to some of the technical problems with implementing dynamic lighting and realistic shadows in a "2.5D" isometric game.

 

The thing is, dynamic lighting and realistic real-time shadows are something people have been working on for a long time in "true" 3D games, and it is not that hard to find and implement good solutions - in fact, Unity will handle this pretty nicely - see what they offer here: http://unity3d.com/unity/engine/lighting

 

However....

 

Those techniques are meant for a 3D environment, and I just cannot see how they would apply directly to a "2.5D" game - I cannot see a simple, good solution (and I have done enough programming at the DirectX level to be reasonably familiar with the issues).

 

What worries me is that if Obsidian decides to implement realistic real-time shadows, it would require substantial work, but if they don't, they might disappoint some people whose expectations are based on their experience with "3D" games.

 

Personally I don't need to see real-time shadows - but I don't really know what expectations people have in general.

.

Link to comment
Share on other sites

Believable shadows in enough for me. Having detailed shadows was never a concern for me in any game.

Derpdragon of the Obsidian Order

Derpdragons everywhere. I like spears.

 

No sleep for the Watcher... because he was busy playing Pillars of Eternity instead.

Link to comment
Share on other sites

I think ultimately it's one of those things which would be nice to have, but it's something that's costs might far outweigh what it adds to the game. It's a shame in a way, because something I'd really like to see in an RPG is more use of lighting as a strategic factor - dungeons/caves etc. being genuinely dark, torches etc. being something that's vital. It seems like a missed opportunity to me in games like Skyrim (I know there are mods which play with the idea), but I guess it would be too irritating to people in a more mainstream game, and too expensive in a game like this.

Edited by Exile2k4
Link to comment
Share on other sites

Detailed terrain shadows would be neat. This wouldn't need to be dynamic, and shadows of say trees could be done in high quality with sprites. Then lower quality dynamic shadows can be used only to cast shadows on (and be casted by) 3D character and creature models.

Link to comment
Share on other sites

There is no way for "real-time" dynamic shadows to exist in this sort of game, the shadows will be done during the rendering process of the background images (while it is still 3D), as we've already been shown:

http://media.obsidian.net/eternity/media/updates/0025/PE-TempleEntrance-ProcessStack-1340.jpg

It will end up as a bitmap/image with shadows already baked in.

 

Only elements that can (and will likely) have changing real-time shadows will be 3D objects in the scene like characters and monsters, the effort for doing that should be minimal. Just placing some light sources and having the engine render it in an acceptable way.

Link to comment
Share on other sites

Only elements that can (and will likely) have changing real-time shadows will be 3D objects in the scene like characters and monsters, the effort for doing that should be minimal. Just placing some light sources and having the engine render it in an acceptable way.

 

I'm not so sure about the "minimal" part. It's easy enough if you just have light from above - then you can easily create realistic shadows on the ground. The problem is when you have light sources to the sides - when you pre-render the background, you lose information on the orientation of any particular point, and without that information is is hard to create "correct" shadows.

 

However, the the shadows don't really have to be accurate, just "good enough", so this probably not worth worrying about.

Link to comment
Share on other sites

Can anybody answer the question of how difficult it would be for a complex, 2D object to self-shadow? I guess you would need to simulate it through an invisible 3D model, then project the resulting shadow onto the structure's 2D image and subtract out the concealed parts. For something like a tree, that would seem to be be messy and compute intensive.

 

 

 

A thought occurs: they could use a series of pregenerated shadows as semi-transparent overlays. Just fade between each over the intervening time. (Probably storing the shadow deltas would be the most efficient.)

Edited by rjshae

"It has just been discovered that research causes cancer in rats."

Link to comment
Share on other sites

I don't think converting a 2D object to 3D to render shadows would be too conceivable. Shadows would be "baked" in when a scene is converted from the 3D model to a 2D image. Thus the only dynamic shadows would be used in cases of occlusion, and those wouldn't need to be too detailed. Perhaps this is what you meant, Rjshae? How will shadows be managed in cases of occlusion, where a 2D image layer is casting a shadow on a 3D model?

 

In this case, self-shadowing is a non-issue. Already baked in. The problem would be in casting correct dynamic shadows based on 3D and not 2D geometry.

I think an invisible low-poly model to cast shadows, while plausible, isn't quite the best solution to this problem. Maybe the shadow itself could be a special shader that includes angular data, and would be only visible and computed when it occludes a 3D model? Honestly, I'm not too knowledge in this type of thing, but I hope this helps.

Link to comment
Share on other sites

My understanding is that the elements of the scene are initially being rendered in 3D, then projected onto 2D followed by artistic touch-ups. That means they will have the 3D information and can use that to determine shadows from the Sun/Moon directional lighting as well as from fixed point sources. If they wanted to, they could use the 3D information to generate the shadows only for each Sun/Moon position (and other lights), then turn that into an overlay. It should be monochromatic data, so I wouldn't think it would take up much disk space.

"It has just been discovered that research causes cancer in rats."

Link to comment
Share on other sites

My understanding is that the elements of the scene are initially being rendered in 3D, then projected onto 2D followed by artistic touch-ups. That means they will have the 3D information and can use that to determine shadows from the Sun/Moon directional lighting as well as from fixed point sources.

 

Indeed, but that's not what I was talking about - prerendered shadows from fixed light sources are easy. The tricky part is dynamic lighting, for example if the characters carry around lanterns, torches or magical light, and real-time shadows, when the characters (or monsters) move around.

Link to comment
Share on other sites

There's invariably going to be some sort of simple 3D mesh the defines the shape of the map. You need one to determine which areas are walkable, and do pathfinding and LoS calculations. The same mesh can also be used for dynamic lighting and to constrain particle effects. The concept is pretty simple, but it may require some cleverness to get it to look nice.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...