Sign in to follow this  
bubububu

GUI doubt for 3d engine editor

Recommended Posts

Hello again, I need to take a decision about the GUI system to use for my 3D engine level editor. The GUI must be free for commercial use and should be 100% portable to Windows, linux, MacOS and Solaris. The game editor gonna contain lots of standard controls(buttons,combo boxes, list boxes, tree control) plus several 3D viewports. I prefer native look-and-feel over all. The 3D engine core is written in C++. My first options are wxWidgets and Java. I know there are other options like FLTK, Fox, etc... but I think the most supported and mature are wx and Java. also could use my own GUI system(from the 3D engine core) but I prefer native look-and-feel as I mentioned before. wxWidgets is very cool... but the free GUI dialog designers(wxFormBuilder,wxGlade) aren't as mature as the Java ones (netbeans,eclipse, blah blah). On the other hand Java will run in other OSs without having to recompile most parts of the code(vs wxWidgets). The question (for the JNI experts) is... Is JNI easy to use if I plan well the native classes I need or that gonna result in millions of DLLs? What problems can I found using JNI? thx

Share this post


Link to post
Share on other sites
Quote:
Original post by bubububu
The GUI must be free for commercial use and should be 100% portable to Windows, linux, MacOS and Solaris.


How many people are on your team? Supporting those 4 platforms is going to require a lot of effort.

Quote:
The game editor gonna contain lots of standard controls(buttons,combo boxes, list boxes, tree control) plus several 3D viewports. I prefer native look-and-feel over all. The 3D engine core is written in C++.


Which 3D API are you using? OpenGL? How do you intend to test all 4 platforms?

Quote:
My first options are wxWidgets and Java. I know there are other options like FLTK, Fox, etc... but I think the most supported and mature are wx and Java.


Which platform you use is secondary. The biggest problem and most time consuming part will be the 3D API. I don't remember vxWidgets having any support for it. Java offers several libraries, there's also several 3D engines. I won't make any claims of portability to Solaris though.

Quote:
wxWidgets is very cool... but the free GUI dialog designers(wxFormBuilder,wxGlade) aren't as mature as the Java ones (netbeans,eclipse, blah blah).


This isn't a big problem. Your primary concern should be portability and testability. Is the library monolithic, or can it be unit tested.

Quote:
On the other hand Java will run in other OSs without having to recompile most parts of the code(vs wxWidgets).


While that is true, the saving in this case is minimal. Again, testing is going to kill you. For each change you make, you need to test on 4 platforms x n hardware configurations.

Quote:
The question (for the JNI experts) is... Is JNI easy to use if I plan well the native classes I need or that gonna result in millions of DLLs? What problems can I found using JNI?


You will need to provide 4 versions of JNI and generate 4 native targets. You may need to compile on target platform itself, since cross-compilation may not be practical.

The problems will be same as above. After generating 4 targets you will need to test each of them in combination with various hardware combinations.

The show stopper here is 3D hardware. Even at best, drivers have bugs, OGL has bugs and binding has bugs. That doesn't even touch other random problems, such as mis-documented APIs, incomplete implementations or simple random problems.

Portability is a noble requirement. Just keep in mind that effort to achieve it will be enormous, especially since Solaris sticks out somewhat. The by far biggest problem you'll be facing with regard to 3D however is the QA. It's not uncommon for single platform projects to have a full team doing nothing but that, but supporting 4 at the same makes the problem much worse.

If you're thinking of making this a solo project, I'd say it's not feasible. The amount of work to produce anything non-trivial (you implied "commercial") will be huge. There is a reason why such projects are rarely cross-platform.

instead, you might want to try to ensure Wine or Cedega compatibility. But again, given the 5% non-Windows share for games, is it worth increasing your workload by 4-16 times?

Share this post


Link to post
Share on other sites
There's a great widget library that's platform independent called Agar -- http://libagar.org/ it is drawn entirely using SDL or OpenGL, and I'm pretty sure there's a way to make an OpenGL widget. It's under the BSD license, check it out.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this