Okay, I’ve migrated from python to java, along so I’ve ported a game engine I was working on a while back (link here)
The problem was most of my opengl work was just blah in python. I really like how blender’s game engine is very elegantly event driven from a UI and I took that idea and started playing with it in python.
So here is a little food I considered, since I am working on my own game engine, why not intergrate into Blender (sorta) Blender’s GE button has its own window and it wont be hard to create me own via Blender’s Python API (BGL, Draw). This would allow users to use Blender to create game still, but be ported to Java, and java runs in a lot of places.
The UI would just write java code and compile @ runtime into java byte code. This way you can start working on a game in Blender and if the UI is not doing what you want, take the source its generated and work from there.
Now what about the source? Java compared to Python is a lot harder, well there is Jython, python synax accessing Java libraries. And I can embed python scripts into the java generated game.
On top of that there is Project Darkstar, a perfect game server for MMORPG’s developed in Java. There is also Java Web Start, making it easy to launch games from any browser. Not only that it takes care of version tracking, so lets say you’ve updated your game and using Web Start, anyone playing your game via web start will get the updates as soon as you upload it to the net.
Here is a sample unit test via “Darkcore” in Java
Reader d3m = new Reader();
// What coord to look (0.0, 0.0 0.0) is default
camera.setView(0.0f, 0.0f, 0.0f);
camera.setPosition(3.0f, 3.0f, 0.0f);
/*
* Usually don't need this but I use Blender & lazy to rotate
* models. API should be changed to "setAxisUp"('z', 1)
*/
camera.setLookUp(0.0f, 0.0f, 1.0f);
core.Cube cube = new core.Cube();
/*
* Assigning textures shouldn't need "world" but it will do for now =_=
*/
cube.assignTexture(world, "64x64.png");
cube.setScale(0.5f, 0.5f, 0.5f);
world.addMesh(cube);
core.Mesh suzanna = d3m.Parsed3m("src/data/models/suzanna.d3m");
//suzanna.assignTexture(world, "64x64.png");
world.addMesh(suzanna);
Light lamp = new Light();
lamp.setPosition(3.0f, 3.0f, 0.0f);
world.addLight(lamp);
// Notice 64x64.png is the name used to put textures on the models
world.bindTexture("src/data/images/64x64.png");
If your still reading below here wow :P. Yes there is jMonkey & Xith3D game engines, but there are certain things I would like to have the API accomplish. For example loading suzanna, it doesn’t have to be from a local file, it could also load from the net “http://foo.com/suzanna.d3m”