Jump to content
  • entries
    2
  • comments
    26
  • views
    15,791

My experience so far....


Andy Gilbert

4,114 views

 Share

My hours of use in leadwerks 3 is already counting up fast and along the way i thought i would share some of the things ive found so far. Which no doubt means this will turn into a small rant about the features i wish leadwerks 3 had in its current version :) I am not going to talk about bugs as we all should expect them in new software and trust they get resolved as soon as Josh can get around to them, what i am going to talk about are a couple of (to me) significant issues with the "current" leadwerks 3 when developing for PC or MAC.

 

To start with and get it off my chest, leadwerks 3 in my eyes is extreamly good and i am happy with my purchase, i find its easy of use for simply getting stuck in and making a quick game very good (despite the current bugs). But im finding in its current state a, quick game or demo is about all i seem to be able to do.

 

At the moment i am primarily interested in developing for PC (and maybe mac) thefore I deciced to see if I could script a quick FPS system along with some AI for learning purposes. After a short time I posted my result on here which some of you might have seen (I wont post it again) and I was very surprised at how easy I personally found it to put the demo together with animations, sounds and AI. So this encouraged me to go ahead and see if I can get a full blown FPS game with some decent visuals and some clever AI running around, which is where I started hitting some confusing problems.

 

The CSG / Model conflict

First, i started by designing a larger level and as my understanding goes when CSG is involved you create your base layer, blocking and main structure out of CSG and then add in detail with models. This to me is great as I love developing 3D environment models, but not so keen on making full blown levels in 3D, so to me the CSG is great and a very wise feature. Until... you try to apply both, it unfortunatly doesnt currently work in certain areas and this (for me) is down to normal mapping and shadows.

 

Shadows

I can easily create a nice level structure in CSG, through some lights in and get some lovely looking shadows from a lightmap pass and it looks great! Unfortunatly CSG can only have diffuse textures and are therefore a bit "flat" looking, but nevertherless looks ok. So now if i add some detail models, these can cast static shadows but only onto CSG and not onto anything else or even them selves, this instantly gives a confusing visual conflict of light (which we all know is one of the most important factors of todays games), at first i thought it wouldnt be much of a big deal but the more detail you add the bigger the visual conflict becomes. I then tried to not add so much detail and try to balance it, but then the problem just remains and the level looks empty and dated, I then thought I could do some of the detail in CSG but without any simple CSG operations other than rotate and scew this is impossible (especially without a texture lock feature), so this is the first wall I hit.

 

This also came a problem when I threw in a mid-poly character with a nice modern gun, normals and spec, but it was instantly spoilt without shadows, even with a simple plane shadow underneath it instantly made it look like a visual from 10 years back.

 

Normals & spec

The second conflict I found is the normals and specular maps. To me specular maps are extreamly important, normal maps show detail but specular maps tell the user what the material is, and we can have this with imported models and thats great. But having it with models but not with CSG causes a very similer conflict. If you watch my video of the underground "wearhouse" style FPS, when I fire the gun a flashing light emits to give the effect of a muzzleflash, what surface around me flash? only imported models with a normal map applied, so the gun, cardboard boxes & the signs on the wall do, but the actual walls and level dont and to be honest I cant figure a simple way around it.

 

Options

Do the whole level in an external 3d modeller so you can have normals and specs, but then still have no shadows. Or do a game where alot of work can be done using simple CSG shapes and some detail models where shadows and lighting are not as important which is why I think the current version of leadwerks 3 is designed for the mobile platform and not for PC (which is a dang for me).

 

After all said and done though leadwerks 3 is very powerful and i like it alot, but unfortunatly just missing some vital features that bring it on par with some of the other engines.

 

I know there is a roadmap that will cover most of the issues im finding and I just hope that in the near future we get some of these features back that will allow us to develop exciting and graphically pleasing games for PC and MAC.

 

But for now, even some projected shadows for imported models would make a HUGE difference. cool.png

 

Thanks for reading.

Andy

  • Upvote 3
 Share

11 Comments


Recommended Comments

Have you some screenshot ? Could you lake one or two to see if it really looks so out dated please ?

 

For PC :

 

I would say, wait for next update, make all your level in some modeler and use only real time shadows.if you target High or good PC only.

If you target Lap Top, lowPC , yes use BSP and wait for self shadowing.

 

In a modeler you can go fast at level making , if you make a scene containing a library of 3D Tiles :you have just to load this scene , than copy and align 3D Tiles to make your level

Link to comment

Normal map is coming for BSP i read on the forums (so you'll have normal map + light map on your BSP level)

For specular i don't know.

 

If you need different shaders for the base level , you'll better choose models and not BSP.

 

Another solution :

Use Baked normal maps (normal maps transformed to gray levels)

I seen that , even on Uncharted game.

You won't notice the difference alot , specially in a action game.

It depends if you target eye candy with dynamic lightening, or simple normal map look ?

Link to comment

Yougrove, i honestly think you just enjoy typing.

I would say, wait for next update, make all your level in some modeler and use only real time shadows
I am aware of this, hence in my post i refer to the "current version" of leadwerks 3.

 

Normal map is coming for BSP i read on the forums (so you'll have normal map + light map on your BSP level)

I know this as i explained in my post.

 

If you need different shaders for the base level , you'll better choose models and not BSP.

Same again, i said in this in my post?

 

Use Baked normal maps (normal maps transformed to gray levels)

I seen that , even on Uncharted game.

You won't notice the difference alot , specially in a action game.

It depends if you target eye candy with dynamic lightening, or simple normal map look ?

Are you a modeller? Baking normal maps is a process of baking a normal map from a high-poly model, this is the only thing i can assume you are refering to. But again, like i mentioned, normals and spec on models is no problem, but models dont cast or receive any shadows on other models in this current version of leadwerks3, nor does BSP have normals or spec (at the moment) so in a complex scene there are visual conflicts that make the scene look bad.
Link to comment

@at the confusing posts above.. Maybe he meant baking all additional maps into the diffuse texture?.. of course this only works in limited situations, and not in your case..

 

But im finding in its current state a, quick game or demo is about all i seem to be able to do.

That was my impression when I looked at the beta demo.. PC is also my main platform of interest and right now, in it's hugely unfinished state LE3 is simply not cut for doing a more complex or big game on this platform.. Hopefully the big updates will come soon enough!

 

anyway, thanks for the nice in-depth report!

Link to comment

In a renderer designed to run on everything, it's useful to have a distinction between CSG and model geometry. CSG geometry forms the "background" of the scene and is very cheap to render, since no lighting information has to be calculated. If you look at Left 4 Dead 2, the dynamic lighting only affects the models as well. They put a lot of model geometry into the scene, and you don't really notice when you're getting eaten by zombies. If it's good enough for Valve, I think it's good enough for our basic renderer.

 

It's not really worth it, IMO, to worry about physical accuracy of light when you just want something that runs everywhere. The new deferred renderer will provide very realistic lighting, and the basic renderer is intended to provide a fallback for hardware that can't handle high-end graphics. If it turns out a lot of people absolutely need dynamic lights to affect CSG brushes, it's pretty trivial to add, but I don't want to make spur-of-the-moment design decisions.

 

Likewise, models do not self-shadow because they just use vertex lighting. I don't think it's worth putting a lot of effort into making a better "fake" lighting system when we can put that effort into writing a new deferred renderer. The basic renderer is meant to run fast on everything, not provide physically accurate lighting.

 

Now, I can add CSG normal maps by baking the light direction into the lightmap. The challenge there is I want to store the light vector in the alpha channel of the lightmap, not in the RGB components of a second texture. It's not perfectly accurate, but it looks good. (Again, Source Engine uses this approach.)

Link to comment

Hey Andy. I have some "hybrid" shaders which does both lightmap and dynamic lights. (Not for mobile). Let me know if you want to test in one of your csg levels)

Link to comment

Shadmar that would be great to have a play with them if you don't mind of course. How do you want to get them over to me?

 

Josh I do agree, and like I said I know the future renderer will bring them big graphical features back. But in the videos I watch of left 4 dead there's a torch being emitted and that torch lights up everything, models and geometry? What I did notice is the torch doesn't effect the shadows of the zombies, but nevertheless they do have some basic projected shadows from somewhere. And I guess this is what's missing the most, simple shadows for animated objects and maybe some dynamic lighting for csg, even if for pc/mac use only.

 

Thanks

Andy

Link to comment

In a renderer designed to run on everything, it's useful to have a distinction between CSG and model geometry. CSG geometry forms the "background" of the scene and is very cheap to render, since no lighting information has to be calculated. If you look at Left 4 Dead 2, the dynamic lighting only affects the models as well. They put a lot of model geometry into the scene, and you don't really notice when you're getting eaten by zombies. If it's good enough for Valve, I think it's good enough for our basic renderer.

 

It's not really worth it, IMO, to worry about physical accuracy of light when you just want something that runs everywhere. The new deferred renderer will provide very realistic lighting, and the basic renderer is intended to provide a fallback for hardware that can't handle high-end graphics. If it turns out a lot of people absolutely need dynamic lights to affect CSG brushes, it's pretty trivial to add, but I don't want to make spur-of-the-moment design decisions.

 

Likewise, models do not self-shadow because they just use vertex lighting. I don't think it's worth putting a lot of effort into making a better "fake" lighting system when we can put that effort into writing a new deferred renderer. The basic renderer is meant to run fast on everything, not provide physically accurate lighting.

 

Now, I can add CSG normal maps by baking the light direction into the lightmap. The challenge there is I want to store the light vector in the alpha channel of the lightmap, not in the RGB components of a second texture. It's not perfectly accurate, but it looks good. (Again, Source Engine uses this approach.)

 

Josh, source engine bakes directional lightmaps which stores light direction into a RGB channel, this is useful to fake dynamic lighting on static meshes (as CSG brushes) and even compute lighting dynamic on moving entities veary cheaply as the light direction is already computed. The only downside is that light sources must remain static (never moves). Directional lightmaps doesn't need to be as big as lightmaps. You can have as many detailed lightmaps in a big scene and few or even only one directional lightmap per level.

And i agree with the Source approach, if you can mimic the source engine, you will have a very good renderer that runs everywhere.

A defferred renderer won't run on current mobile devices it is too bandwith hungry. Maybe in a two years when the iPad4 will be the lowest thing you can get on a tablet then maybe you'll have good chances to write a defferred rendering for it. Otherwise, stick with the Source way.

Even in a forward renderer you can compute multiple lights in the same pass and you automatically switch their positions in the shader (for each dynamic object affected by lights). For example you let the user chose how many dynamic lights should any entity be affect by (to a maximum of 4) and switch lights position in the object shader. If i remember well, source engine does exactly this with dynamic entities. Unless you really want to see tons of lights moving in a game (hich is really rare), i don't see any urgent need for a defferred renderer.

  • Upvote 1
Link to comment
But in the videos I watch of left 4 dead there's a torch being emitted and that torch lights up everything, models and geometry? What I did notice is the torch doesn't effect the shadows of the zombies, but nevertheless they do have some basic projected shadows from somewhere. And I guess this is what's missing the most, simple shadows for animated objects and maybe some dynamic lighting for csg, even if for pc/mac use only.

That's true. I will add that in. It's pretty simple to do.

Link to comment
Guest
Add a comment...

×   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.

×
×
  • Create New...