Skip to content

Comment on Ogre 1.12.3

Comments

Ogre is a great little 3D engine. It is small and elegant with some tools surrounding it to make it work. One big downside though is that it is/was made in an 'object oriented' style where everything is a pointer to a virtual table that then points to a heap allocated object. This makes everything slower and more difficult to debug. Small games usually don't have enough entities to make it a problem though.

Worth noting is that there is a v2 branch of Ogre, which is a near-full rewrite aimed at fixing these issues [1].

It was, I think, more than 5 years ago that Matias Goldberg wrote the first demo of what speedups are possible in Ogre by following a data-oriented approach: contiguous structures, eliminating excessive branching, structure-of-arrays layouts, etc. I'm happy it's grown into something pretty usable today (from what I see).

Now it seems that all this is the standard industry wisdom, but I feel like at the time people were only slowly realizing the real cost of all those vtable lookups and abstractions.

[1]: http://wiki.ogre3d.org/tiki-index.php?page_ref_id=2191

Ogre has been around for a while and not only were people less aware of pointer chasing issues, they weren't as much of an issue relative to the full speed of the cpu.

Ogre got a bit of a critical review from Mike Acton a few years ago along those lines and since I believe they have re-architected things quite a bit. So I'm not sure from what version your comments apply, it is more performant now than it used to be.

It might not be the engine to use if you want to make Doom5, but some of the best selling games of all time of have been made in Java, or older versions of Unity, which have more performance limitations than Ogre.

but some of the best selling games of all time of have been made in Java

Any examples of this other than the obvious one (Minecraft)? That is the only one I can think of.

Pokemon Go, Subnautica, Kerbal Space Program come to mind immediately.

It should be noted that ALL of these, including minecraft, suffered in quality because of their performance. But, commercially they all did really well.

To clarify, Subnautica and Kerbal Space Program are examples of Unity games, not Java.

Pokemon Go was also made in Unity.

I think Slay the Spire was Java.

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.