Jump to content

A few thoughts after playing Oblivion


Marcus
 Share

Recommended Posts

I have just been playing through Oblivion and it made me think about a few different things concerning LE.

 

1) Terrain texture limitations. I really hope there are plans to increase the amount of textures supported on the terrain. Looking at Oblivion, how far would the visuals have gone with 4 or 5 textures on the terrain? 4 or 5 textures may work for a VERY limited geographical area, but anything more than that it fails hard...epically. Adding more textures...perhaps unlimited (theoretically) amount would really add to the visual quality of the engine.

 

2) Background loading. I personally believe the days of corridor shooters is drawing to a close. I believe games will generally trend towards open environments. LE is really good for large terrains and now massive amounts of trees (just waiting on collision). Things would be even more efficient if we had background loading/streaming. While not in my plans, this would allow for MMO games. It would still benefit other games as well and I would consider it essential to the success of LE in the future.

 

3) Global Illumination. While I know that deferred rendering is great for a massive amount of lights. This creates stunning results. But honestly, I still think baked global illumination and ambient occlusion still looks better than the flat look in LE right now. Just to be clear, I still believe that LE behaves more realistically with all dynamic lights, but I don't think it looks as good as some of the baking that can be done. I would love to see global illumination make it into LE ASAP. I believe Josh has this in the plans...I forgot what he called his implementation.

 

Anyway, just a few suggestions. I hope the fanboys don't take this as criticism. I think that LE has a long way to go yet, but I think it is moving the right direction.

  • Upvote 2
  • Downvote 2
Link to comment
Share on other sites

I think I would support all three of these suggestions, they are certainly things that have all indivdually been requested in the past.

 

I personally have now given up asking for the increase in texture layers ... you can only ask for something so many times before it just becomes a pointless exercise. I hope it's on the 'to do list' for implementation at some point; as the current 5 layers are way to restictive.

Intel Core i5 2.66 GHz, Asus P7P55D, 8Gb DDR3 RAM, GTX460 1Gb DDR5, Windows 7 (x64), LE Editor, GMax, 3DWS, UU3D Pro, Texture Maker Pro, Shader Map Pro. Development language: C/C++

Link to comment
Share on other sites

If the 5 layers don't change soon, I have to move on. Five layers just won't work for the project I'm working on. Deal breaker. I hope it comes soon.

 

 

Deal Breaker?

AMD Bulldozer FX-4 Quad Core 4100 Black Edition

2 x 4GB DDR3 1333Mhz Memory

Gigabyte GeForce GTX 550 Ti OC 1024MB GDDR5

Windows 7 Home 64 bit

 

BlitzMax 1.50 • Lua 5.1 MaxGUI 1.41 • UU3D Pro • MessiahStudio Pro • Silo Pro

3D Coat • ShaderMap Pro • Hexagon 2 • Photoshop, Gimp & Paint.NET

 

LE 2.5/3.4 • Skyline UE4 • CE3 SDK • Unity 5 • Esenthel Engine 2.0

 

Marleys Ghost's YouTube Channel Marleys Ghost's Blog

 

"I used to be alive like you .... then I took an arrow to the head"

Link to comment
Share on other sites

I'm aware of the definition, was just curious how you apply it to something you have already completed a deal on.

 

Terrain Layers

 

Global illumination

 

Seems they are coming, eventually.

AMD Bulldozer FX-4 Quad Core 4100 Black Edition

2 x 4GB DDR3 1333Mhz Memory

Gigabyte GeForce GTX 550 Ti OC 1024MB GDDR5

Windows 7 Home 64 bit

 

BlitzMax 1.50 • Lua 5.1 MaxGUI 1.41 • UU3D Pro • MessiahStudio Pro • Silo Pro

3D Coat • ShaderMap Pro • Hexagon 2 • Photoshop, Gimp & Paint.NET

 

LE 2.5/3.4 • Skyline UE4 • CE3 SDK • Unity 5 • Esenthel Engine 2.0

 

Marleys Ghost's YouTube Channel Marleys Ghost's Blog

 

"I used to be alive like you .... then I took an arrow to the head"

Link to comment
Share on other sites

I'm aware of the definition, was just curious how you apply it to something you have already completed a deal on.

 

Terrain Layers

 

Global illumination

 

Seems they are coming, eventually.

 

Well, yes I have bought the engine, but I don't have to use it. Anyway, I could probably bake the global illumination. The terrain...not sure what to do.

Link to comment
Share on other sites

Would be nice to assign material files instead of just dds textures. If the editor was changed around to do that it could easily raise the limit to ten (or more) by assigning two texture files and using a blending value. 0.0 would be texture 1, 0.5 would be a blend of both, 1.0 would be texture 2. Just some ideas. I'd experiment such a thing but I need the sandbox source or to finish mine, lol.

 

Edit: Not to mention additional effects, like parallax.

  • Upvote 2
Link to comment
Share on other sites

Dynamic loading like you describe is unlikely to happen. It would only benefit a few people with a design so ambitious it is unlikely to ever be completed. Even STALKER and Crysis don't use this approach. This would also limit the flexibility of the engine. For example, right now you can loop through all the entities in a scene. What happens when you have other sections of a scene loading and being freed? An entity you have a handle to might no longer exist. A raycast you perform might go outside of the loaded area of the scene. And if people aren't even filling up the existing area they have now with a scene they make, why would they need more space?

  • Upvote 2
  • Downvote 1

My job is to make tools you love, with the features you want, and performance you can't live without.

Link to comment
Share on other sites

Dynamic loading like you describe is unlikely to happen. It would only benefit a few people with a design so ambitious it is unlikely to ever be completed. Even STALKER and Crysis don't use this approach. This would also limit the flexibility of the engine. For example, right now you can loop through all the entities in a scene. What happens when you have other sections of a scene loading and being freed? An entity you have a handle to might no longer exist. A raycast you perform might go outside of the loaded area of the scene. And if people aren't even filling up the existing area they have now with a scene they make, why would they need more space?

 

Actually the Crytek 3 engine does allow for streaming of assets Crytek 3 Specifications. Gamebryo and Unreal 3 also allow this as well. I wouldn't be surprised to hear that S.T.A.L.K.E.R.'s X-Ray engine does it as well.

 

I'm not entirely sure how it is done, but it is obviously being done.

Link to comment
Share on other sites

They stream textures and shaders in. That's why textures start blurry and get sharper as they are loaded.

 

I don't like requests like this because people are requesting things they can't even define.

  • Upvote 1
  • Downvote 1

My job is to make tools you love, with the features you want, and performance you can't live without.

Link to comment
Share on other sites

Will be interesting to see how LE and the other engines compare to iD Software's iD Tech 6 engine - It plans to abolish texture restrictions entirely. It looks amazing.

  • Upvote 1
  • Downvote 1

Programmer, Modeller

Intel Core i7 930 @ 3.5GHz | GeForce 480 GTX | 6GB DDR3 RAM | Windows 7 Premium x64

Visual Studio 2008 | Photoshop CS3 | Maya 2009

Website: http://srichnet.info

Link to comment
Share on other sites

They stream textures and shaders in. That's why textures start blurry and get sharper as they are loaded.

 

I don't like requests like this because people are requesting things they can't even define.

 

Not sure how I haven't defined streaming? I'm not being negative about your engine. I don't understand why you attack me when I am trying to offer a sensible way to improve the engine.

 

No engine == perfection

LE != perfection

 

It is just a trade off of what works for your project.

  • Upvote 1
  • Downvote 1
Link to comment
Share on other sites

Unreal 3 supports streaming of assets/scenes/etc (http://udn.epicgames.com/Three/ContentStreaming.html), as does Unity3D and Unigine (supposedly, I haven't gotten around to testing it yet in Unigine). It would be a nice feature to have. LWE seems like it could do much the same thing, even over the web using the http and caching features of the abstract file system. Does LWE support async/background loading or are all the Load* calls blocking? Is there any reason we couldn't implement our own threaded background loading system by calling Load* in a separate thread before it's actually used?

 

I guess the only thing missing in LWE that we couldn't implement ourselves would be streaming terrain. Maybe having the ability to load terrain blocks would satisfy everyone, then leave it up to them to load/unload/position them properly.

 

Anyways, Josh says he's bumping the number of textures which will be a nice start. All in all LWE is still the best I've found when you take into account licensing terms/cost, lighting, features, performance and ease of programming.

  • Upvote 1

Windows 7 x64 - Q6700 @ 2.66GHz - 4GB RAM - 8800 GTX

ZBrush - Blender

Link to comment
Share on other sites

Yeah, seems like everything is doable ourselves as far as loading in assets as required except for terrain portions. Would need to be able to load multiple terrains and position them. Then could do the loading/unloading yourself to make arbitrarily large terrains and such. Maybe just set a cap on the max total loaded in at once for performance reasons and leave it up to the user to page in/out as needed to stay under these limits.

Windows 7 x64 - Q6700 @ 2.66GHz - 4GB RAM - 8800 GTX

ZBrush - Blender

Link to comment
Share on other sites

There would be so many workarounds and complications you would have to deal with when programming that people would be yelling to change it back if I did this.

 

What happens if the user does this?:

 

mesh=LoadMesh()

CountChildren(mesh)//mesh is not loaded yet. Should it wait? Should it crash? Should it only return the loaded children?

 

Now let's say your program loops through all meshes in the scene and does something. After it finishes, a mesh that was loading appears! Now you can't figure out why that one mesh was unaffected by what you just did.

 

Your entity counts would change during other routines which could easily cause random crashes if you are not careful with your code. It's hard enough now to keep everything in order and bug free. This would continuously introduce a lot of new bugs in my code, and in your own games.

 

There's a thread on the Unreal forum where a person who is familiar with LE asks how to alter a mesh's vertices at runtime. The answer was that you could not with that engine. That's just one example of the tradeoffs of freedom this kind of thing involves.

 

If I allow multiple terrains, then all terrain shaders like grass color, vegetation height, or vehicle dust color are broken.

My job is to make tools you love, with the features you want, and performance you can't live without.

Link to comment
Share on other sites

Exactly why I'm using LWE :) The UDK was too restrictive in some ways. It does have some awesome tools though. I'm hoping to replicate some of them for LWE. I wouldn't worry about implementing streaming/paging of either terrain or assets in LWE itself, leave that to the people who want to use it. But you have to make it possible for them to implement it themselves, which right now doesn't seem possible for terrain. I'm not sure if it's a limitation of whats exposed by the engine or just a documentation deficiency.

Windows 7 x64 - Q6700 @ 2.66GHz - 4GB RAM - 8800 GTX

ZBrush - Blender

Link to comment
Share on other sites

It isn't possible due to the reasons I said above. Is it worth losing the grass system for?

 

Not sure how I haven't defined streaming?

"Streaming" can mean a lot of things. In Crysis it means textures are loaded in one mipmap at a time. In Far Cry 2 it means the whole world is one seamless region. The kind of streaming Crysis has is not the same kind of streaming FC2 has.

My job is to make tools you love, with the features you want, and performance you can't live without.

Link to comment
Share on other sites

I guess it really comes down to the paradigm you want to build your game in. Its pretty obvious to me that game engines aren't a one-stop shop. You have to the pick the one that ticks the most boxes for you.

For me, I picked LE because this is my first foray into C++ and game development, so having an easy to understand and modern OO engine is very important to me. Everything else is just a bonus.

Programmer, Modeller

Intel Core i7 930 @ 3.5GHz | GeForce 480 GTX | 6GB DDR3 RAM | Windows 7 Premium x64

Visual Studio 2008 | Photoshop CS3 | Maya 2009

Website: http://srichnet.info

Link to comment
Share on other sites

It isn't possible due to the reasons I said above. Is it worth losing the grass system for?

 

 

"Streaming" can mean a lot of things. In Crysis it means textures are loaded in one mipmap at a time. In Far Cry 2 it means the whole world is one seamless region. The kind of streaming Crysis has is not the same kind of streaming FC2 has.

 

Yes it can. That is why in the original post I was talking about large open environments, like Oblivion. If you haven't played Oblivion or have no idea what it is, then I can see why you were confused. Haven't played Far Cry 2, but if it is one seamless world, that is what I am talking about.

Link to comment
Share on other sites

Hasn't Josh already told us 20 times that both an increased terrain texture layer count and an eventual alternative way of doing GI (to use his words: "I think I know a way of doing this.")? If I were Josh, I would totally understand why not pushing these features: No one has made a single game yet.

Link to comment
Share on other sites

An engine like FC2 has to be designed that way from the very start. The problem is a lot of compromises have to be made for it to work. What happens if you modify a mesh, and then it goes out of the playable region? Then when it is reloaded, the mesh is unmodified? What about scripted entities? When they go out of the region and then come back in, all Lua data will be lost? So the user will have to have a save function to save any important info about the lua state so it can be saved across transitions. There are so many complications this would add that most users would be very frustrated by it.

My job is to make tools you love, with the features you want, and performance you can't live without.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...