what is missing from irrlicht?

Discuss about anything related to the Irrlicht Engine, or read announcements about any significant features or usage changes.
Radikalizm
Posts: 1215
Joined: Tue Jan 09, 2007 7:03 pm
Location: Leuven, Belgium

Post by Radikalizm »

bitplane wrote:
Radikalizm wrote:implementing advanced next-generation features is not something you can do in a day, you need to do research, read papers, check out other implementations, watch presentations, etc.
This is the main problem, we need solid contributors who can not only spend the time researching and implementing such features, but are seasoned developers and have good OOP design skills and will carefully refactor their code to fit into Irrlicht with minimal API disruption. That's asking a lot.
If I would not be working fulltime on my own engine (and my university work) I would love to contribute to irrlicht
I'm working on an atmospheric light scattering system for my deferred renderer right now (going to implement it in my forward rendering solution afterwards), maybe I could do an irrlicht port afterwards if I have the time, together with some other features I've developed (no guarantees though)
agamemnus
Posts: 283
Joined: Sun Jan 31, 2010 6:06 pm

Post by agamemnus »

Adler1337 wrote:@wahagn Irrlicht is as easy as it gets. I can't think of anyway to make anything easier. To be honest you're the only person on this forum to even mention that irrlicht is hard. Perhaps you lack the skills needed to use any library?
I've been programming for 16 years, and it did take some time for me to figure out how Irrlicht worked. I use FreeBasic (as well as an Irrlicht Freebasic wrapper) instead of C++. With the wrapper, I was able to do much, but the wrapper changed a lot of the keywords and made it hard to reference the API. The wrapper did have some bugs which took a while to track down. That's not Irrlicht's fault, of course, but it could have been made easier with a simpler or easier to follow API...

Anyway.. Irrlicht is structured with a lot of inheritance (imo a lot of it is unnecessary), and that makes the learning curve more difficult -- not to mention the fact that most if not all Basic languages don't have inheritance, and I just don't program (or think) that way.

Irrlicht just isn't documented as well as it could be, either. The API <> documentation, and even the API documentation is very brisk; the keywords don't obviously match the functions. An example is EMF_COLOR_MASK. I had no idea until recently that this material attribute disables actually drawing to screen: The description reads: ColorMask bits, for enabling the color planes.

I simply can't fully understand the C++ tutorials right away, either. It doesn't help that the custom scene node example uses German words, like "tetrader!" (tetrahedron). No one has yet removed the old tutorials, which are often first in google search results (even though I asked/complained...). An example is http://irrlicht.sourceforge.net/tut003.html, which is first when you search for "irrlicht custom scene node" on Google. Some of these old tutorials simply don't work and can create a lot of confusion.

One major problem is that Irrlicht seems to be too narrowly designed for simple FPS games, greatly neglecting any other type of game or program (this kind of problem isn't unique to Irrlicht, though). I found it difficult to create my flexible top-down camera in Irrlicht for my simulation game. I am not good in thinking in 3D and my top-down camera involves a lot of hackery and many function calls that are probably unnecessary.

All that said, Irrlicht is still decent for my needs. :P
Radikalizm
Posts: 1215
Joined: Tue Jan 09, 2007 7:03 pm
Location: Leuven, Belgium

Post by Radikalizm »

@agamemnus:

Which inheritance do you find unnecessary? Using inheritance to reduce having to repeat code and to orderly structure objects with similar properties is one of the cornerstones of an OO design, and I personally haven't found any overuse of this principle in irrlicht, although it's completely possible that I missed something

The API documentation generated by doxygen has always been complete enough for me, so I can't say I see any problems there, although you are right about the fact that the tutorials on the site are outdated (or atleast they were when I last checked)
Bitplane has however noted in this thread (http://irrlicht.sourceforge.net/phpBB2/ ... hp?t=42639) that a website remake is being worked on, so I believe that'll be solved soon

And about the last statement that irrlicht is too narrowly designed for FPS games, I think the majority of games built with irrlicht I've seen on here are not FPS games; if you're talking about things like the FPS camera that come with irrlicht out of the box, I believe you should see this as an example implementation of what the possibilities are with your own custom scene nodes and animators
devsh
Competition winner
Posts: 2057
Joined: Tue Dec 09, 2008 6:00 pm
Location: UK
Contact:

Post by devsh »

I think with the FPS game argument he meant that the scenes are usually very small and indoor. For example lack of any kind of shadowmapping excludes irrlicht from use in an outdoor game with big open areas. Its hard to make a game with a global directional light (i.e. sun). Also irrlicht doesnt handle the materials very well. The defaults we can operate with are very tacky (as they are fixed function except for parallax map and similar). Even Xeffects wont help with the shadowmapping problem as it is not designed for directional lights as such and does not do LiPSM, TSM or PSM let alone PSSM.
Radikalizm
Posts: 1215
Joined: Tue Jan 09, 2007 7:03 pm
Location: Leuven, Belgium

Post by Radikalizm »

devsh wrote:I think with the FPS game argument he meant that the scenes are usually very small and indoor. For example lack of any kind of shadowmapping excludes irrlicht from use in an outdoor game with big open areas. Its hard to make a game with a global directional light (i.e. sun). Also irrlicht doesnt handle the materials very well. The defaults we can operate with are very tacky (as they are fixed function except for parallax map and similar). Even Xeffects wont help with the shadowmapping problem as it is not designed for directional lights as such and does not do LiPSM, TSM or PSM let alone PSSM.
I can agree with you about the shadow and material systems, this could very well be one of the major reasons why I don't use irrlicht as rendering engine in my own game engine

The shift from a fixed function to a programmable pipeline however is pretty drastic, so the material system is not really an easy thing to fix

The shadowing system on the other hand could be a nice community project if it got some decent dedication and some active and experienced programmers
Adler1337
Posts: 471
Joined: Sat Aug 09, 2008 6:10 pm
Location: In your base.

Post by Adler1337 »

@agamemnus
Most of your problems are because of your lack of c++/3d experience. That is not irrlicht's fault. I agree that a lot of the tutorials are old and outdated, but still they aren't that hard to figure out. Irrlicht has a very nice structure to it. I don't see what you are complaining about. Again this is probably because of you lack of c++ experience. Irrlicht is very broad and in no way does it focus on fps games, although most of the tutorials feature an fps camera. This is probably because of laziness/simplicity. The tutorials do need an update but the way they are now doesn't make irrlicht that hard to use. It just requires you to look through the api and make a few posts on the forum instead of just copying code out of a tutorial.
multum in parvo
agamemnus
Posts: 283
Joined: Sun Jan 31, 2010 6:06 pm

Post by agamemnus »

Adler1337 wrote:Most of your problems are because of your lack of c++/3d experience
I never said that I lack C++/3d experience. I learned openGL before learning to use Irrlicht, in fact. Also, "C++ experience" <> programming experience. Irrlicht shouldn't be made more difficult because the tutorials and API often have technical jargon (not just C++ jargon) that isn't clear to everyone else, like, as I mentioned, "EMF_COLOR_MASK". Irrlicht tutorials and naming should not have non-descriptive jargon that is only perhaps used in a few, perhaps elite, 3D programming circles. These are not major changes that I would have liked, but simply the accumulation of small naming differences can have a big effect on the overall ease of use.

Radikalizm:
Which inheritance do you find unnecessary? Using inheritance to reduce having to repeat code and to orderly structure objects with similar properties is one of the cornerstones of an OO design, and I personally haven't found any overuse of this principle in irrlicht, although it's completely possible that I missed something
A lot of the inheritance in Irrlicht seems to be based on perceived efficiency gains. I'll give you an example: static and dynamic meshes and static and dynamic nodes. There's almost no difference between them; the difference does not need inheritance. A flag would work just as well.

It's just the entirety of the thing. It's kind of difficult to think about the problems (from an outsider's, or beginning IRRLICHT user's perspective!) now that I know more about how Irrlicht works, which I imagine is a big problem for the devs since they are intimate with it. :)

A redone website could be good, but just removing the old tutorials would be a decent patch.

The documentation is somewhat schizophrenic. I have had a number of problems that were only solved by asking on the forums (instead of them being obvious) For instance, the light mapping. I had no idea that you had to reset the normals (er, I forgot the exact command/name of it) after you rescale an object. For efficiency reasons, it makes total sense, but this kind of information is simply not plainly displayed. A lot of such problems are seemingly caused by Irrlicht efficiency practices which are not apparent until you get burned by them.


In terms of the FPS nature of it: yes, it's mostly about the examples and the lack of non-FPS-type camera options.

My game does now have a global lighting source (a "sun"), but getting the settings correct were basically trial and error. One problem I found was that (I think this may have been already corrected?) directX and openGL had massively different (incompatible) light ranges with one specific setup.

It's just a simple lighting scheme, but it's fine for my purposes. Any bouncing lighting rays (maybe what you guys are talking about?) are way beyond my graphics card anyway. :P

-----

Edit: I remember an early problem I had. There was no efficient triangle-based way to find what objects are hit that I could find. (that is in the Irrlicht engine itself-- I guess there's a physics engine or two I could use, but it's just more complexity)

It's all based on bounding boxes... This may work well in a game which has stuff that look like boxes, but requires a custom solution for anything else. I remember that there was (I think) a "triangle selector" method but I have not done anything with that yet and I couldn't find any decent explanation for it yet.

My current solution is to use bounding boxes for 3D objects and simply iterate through triangles (via a simple point-triangle intersection routine) for the flat 2D parts.
Adler1337
Posts: 471
Joined: Sat Aug 09, 2008 6:10 pm
Location: In your base.

Post by Adler1337 »

Sorry, but i assumed you didn't have c++ experience since you said you used a freebasic wrapper and weren't used to inheritance.
multum in parvo
Radikalizm
Posts: 1215
Joined: Tue Jan 09, 2007 7:03 pm
Location: Leuven, Belgium

Post by Radikalizm »

I can't fully agree with you that C++ experience equals programming experience (ever tried assembly programming? :D )

And I don't exactly understand what you mean by static and dynamic nodes and meshes?

EDIT:
I assume you're talking about animated and static meshes, right? I'm not completely familiar with irrlicht's implementation of these, but I'm pretty sure there's a good reason why the two have separate classes (I'll check it out tomorrow)
lazerblade
Posts: 194
Joined: Thu Mar 18, 2010 3:31 am
Contact:

Post by lazerblade »

I'm gonna hop in and post my two cents even though they may be irrelevant at best. I think you don't need separate engine editions, use what you understand.

The one thing Irrlicht falls behind in compared to other engines, is built in features like hardware skinning, LOD(whatever that is), extra built-in shaders, batch and crowd rendering, etc.

Where Irrlicht is ahead, is in flexibility and providing a base for programmers to build their engine up from. It's the old flexability versus ease of use again. You could abstract the concepts, but you might lose some of your flexability in the process.

I like Irrlicht as it is for the most part. A 3d rendering base, with vast stores of online code snippets to wade through and adapt for your project. :)

A true GAME engine is always going to be for an extremely narrow set of games, although it can always be adapted or stretched.
LazerBlade

When your mind is racing, make sure it's not racing in a circle.

3d game engine: http://sites.google.com/site/lazerbladegames/home/ray3d
lazerBlade blog: http://lazerbladegames.blogspot.com/
hendu
Posts: 2600
Joined: Sat Dec 18, 2010 12:53 pm

Post by hendu »

From another Irr newbie's perspective, I don't have much to complain about. Most of what irritates me is C++isms, nothing specific to Irrlicht.

One thing I did wonder about was that there was an octree scene manager posted around these forums, and it was shown to be ~20% faster than the default in many cases IIRC. Why is it not the default?

Then again, with my project being still in mostly planning phase, I don't doubt I will have much more to whine about afterwards ;)
agamemnus
Posts: 283
Joined: Sun Jan 31, 2010 6:06 pm

Post by agamemnus »

Adler1337 wrote:Sorry, but i assumed you didn't have c++ experience since you said you used a freebasic wrapper and weren't used to inheritance.
I like the BASIC syntax much more than the pervasive C++ type-syntax and sometimes C++-ish encouraged techniques in many modern programming languages. (PHP, Java, Javascript, etc.) I'm not an expert in C++ or its syntax, but I wouldn't say I am a noob at it. :D


Radikalizm wrote:I can't fully agree with you that C++ experience equals programming experience (ever tried assembly programming? :D )
I actually agree with you! (not sure who that was directed towards?) Also: I haven't tried it, but I've seen and copy/pasted a lot of ASM, and I agree that it's brutal.
I assume you're talking about animated and static meshes, right? I'm not completely familiar with irrlicht's implementation of these, but I'm pretty sure there's a good reason why the two have separate classes (I'll check it out tomorrow)
Right.
Virion
Competition winner
Posts: 2148
Joined: Mon Dec 18, 2006 5:04 am

Post by Virion »

i'm not sure about FPS, but I did a simple top-down third person shooter with irrlicht in less than 3 months and i seldom ask question in this forum all I need was the Irrlicht doxygen document, everything is in there.
fmx

Post by fmx »

^ some people prefer to ask questions instead of getting their fingers dirty and trying things themselves.
Its the latter group of people that learn to deal with the documentation, the others probably find the docs just as daunting as using irrlicht :wink:
Radikalizm
Posts: 1215
Joined: Tue Jan 09, 2007 7:03 pm
Location: Leuven, Belgium

Post by Radikalizm »

fmx wrote:^ some people prefer to ask questions instead of getting their fingers dirty and trying things themselves.
Its the latter group of people that learn to deal with the documentation, the others probably find the docs just as daunting as using irrlicht :wink:
This is absolutely true, and it's a shame actually that people immediately come to the forums with the tiniest problems (which most of the time are even just simple syntax errors)

Being a good/experienced programmer requires you to not only be able to write clean and structured code, but also to be able to look through the documentation to fix your errors, or even just browse the forums (which I see as a part of the irrlicht documentation)
agamemnus wrote:I like the BASIC syntax much more than the pervasive C++ type-syntax
I was like that too years ago, I couldn't deal with C++ (although I had a basic understanding of the language) so I resorted to other languages, BASIC being one of them for a short while, but I moved to C# and Java afterwards (most of this was before I started out with irrlicht)
When I found irrlicht I started out with the then still maintained .NET wrapper, but I dropped this in favor of C++ (which was a pretty big step for me) shortly after because of the power and flexibility of the language

I've never looked back since

C++ may be intimidating at first, but I haven't met a single programmer who regretted moving to C++ from others languages (except for of course people who are platform-bound with their language)
Post Reply