Game engine integration proposal

Anything and everything that's related to OGRE or the wider graphics field that doesn't fit into the other forums.
Hotshot5000
OGRE Contributor
OGRE Contributor
Posts: 263
Joined: Thu Oct 14, 2010 12:30 pm
x 69

Game engine integration proposal

Post by Hotshot5000 »

For the past 5 years I have been working on a 3D game written in Java that uses the Ogre renderer. But here is the catch. The parts that I needed from the renderer have been rewritten in Java (based on Ogre 1.7) and the rest has been discarded. So you can call it a basic Ogre 1.7 renderer with the fixed pipeline, DX backend and OpenGL backend and shadows excised (Only Opengl ES remains). The game is basically a variant of Descent Freespace with 3D spaceship battles so I didn’t need all those.

The engine uses libgdx to make running on Android, iOS, desktop and web easier, but it uses only the wrapper, not the actual libgdx 3d engine. It uses Ogre there instead.
The game will be done in the following months, hopefully by the end of 2016 and the engine will be open sourced. But, going forward, it’s obvious to me that using Java for the rendering pipeline will not yield the performance that I want (tens of ships on the screen firing hundreds of missiles at each other on a smarphone CPU and GPU). I have been hearing good things about Ogre 2.1 and how it uses a data oriented approach to fix exactly this performance problem that Ogre had due to its object oriented nature.

My idea is this: the game engine that I’ve written is in Java, which makes programming games easier than writing directly in C++, but Ogre is in C++ for historical and performance reasons. Since the vector, math, quaternion etc. classes have already been rewritten in Java it would be like preparing the scene by setting the position, rotation etc. of objects in Java and that data packed to be sent to the renderer through JNI. The renderer operates on another thread so you’re always rendering the last frame. It would be like wrapping a complete game engine around Ogre without changing things in Ogre itself (at least hopefully not too much).
Before starting this project my questions are:

1. Is the 2.1 branch considered stable enough for me to start. If now, is there a time frame when it will be completed?
2. The Vulkan renderer in which I am very interested, will it be part of 2.1?
3. What are your ideas on my plan? Does it make any sense?
4. Will Ogre 2.1 have support for iOS, Android? I am seeing commits related to the metal API but don’t know for sure.
5. How different is the renderer compared to 1.7-1.8 era? Will the same math classes be compatible? I know the insides are different but how about the programming interface. How much has changed for the user of the engine? I admit I haven’t been keeping up with the evolution of Ogre since I have been very busy getting the game done and I was happy I had a renderer that worked.

I know you are very busy and I am not asking for help. I will do everything on my own. I just may need a little guidance here and there on the forums to make sure I understand the new Ogre correctly. Thank you for reading all this!

P.S: For those asking themselves why the hell did I chose Java, well, I didn’t. I just wanted to make a game for android back when the NDK was still on its infancy and Ogre didn’t support Android, so I was stuck with Java.
User avatar
spacegaier
OGRE Team Member
OGRE Team Member
Posts: 4308
Joined: Mon Feb 04, 2008 2:02 pm
Location: Germany
x 137

Re: Game engine integration proposal

Post by spacegaier »

There are already various projects building upon 2.1, so it can be used and is quite stable. Two eye-candy projects are linked here: http://www.ogre3d.org/forums/viewtopic. ... 54#p529365

Some info about the planned rendering support: http://www.ogre3d.org/forums/viewtopic. ... 82#p529482

Also have a look at the dedicated Metal and Vulkan threads for more insights, e. g. http://www.ogre3d.org/forums/viewtopic. ... 90#p526491.

We also plan to release an FAQ in the future providing a clearer outline, but that's not ready yet right now.
Ogre Admin [Admin, Dev, PR, Finance, Wiki, etc.] | BasicOgreFramework | AdvancedOgreFramework
Don't know what to do in your spare time? Help the Ogre wiki grow! Or squash a bug...