3D Game Engine Development

Hey guys, so lately I've been working on an OpenGL (LWJGL) 3D Game Engine, well I guess you can call it Game Library right now but I've been putting a lot of effort into it and I've actually accomplished a lot on it. 

I'm just wondering if anyone wants to test it in a little bit, say a week's time I'll have a prototype done and If someone wants to play around with it I'd be happy to give it out. It is open source and I'll be posting it to GitHub soon. 

 

So let me know if you're interested. Yes it does implement Java so if you're comfortable with Java it'll be a lot simpler to use than if you don't, of course. 

I'd love to test and look at code but I was interested in learning C++ more.

I have a friend who is pretty interested in Java and has a mid-range-ish PC, so it would be a decent performance test to see just how intensive this engine is.

Right now without adaptive V-Sync the engine can render 67k Tris at around 2800 FPS with a Radeon HD 6770. Its not the greatest of optimization (I've seen this GPU push much faster) but it is a low Tri Count considering modern games run 200k min on average 4-500k. So I'll find some high quality models and test them before I release this to GitHub. 

I can test but I will not be able to understand any code.

I could report bugs though.

I'll be able to setup a few GUI Applicatiosn for you. I don't know that I'd want to make a visual programmer but I'll sure as hell write some awesome documentation and examples if you want to work with it. I'm going at this from the point of view of a new beginner because I just want to be able to get someone else started in this awesome world of programming that it is.

will it support rendering objects programatically.. like being able to

Sphere p = new Sphere(radius);</p><p>p.Texture = ?</p><p>viewPort.addMesh(p, x, y, z);

or will it read model info from a file

 

-hmm ts is unhappy about html in code block.. just imagine line breaks where the <p>s are

I'd too like to try but I do not have alot of programming knowledge.

I can make a shape generator. It has the capability to call models and transform them based on Vertices and such. It's quite easy for me to write up a couple requests. I have a bit of free time. So If you have an specific requests I'll see what I can do.

Also the engine uses (if you're not familiar with) Vectors, Most commonly Vector3f (float x,float y,float z) calling for positions, so if you don't have a form of understanding or resources to learn 3D Trigonometry (Mainly just Quaternion transformations and Vector math) it might be a bit annoying using the engine. Tho I am going to be working on a set of utility functions for the non-math literate. Tho knowing the math behind it will allow further optimization :D 

I'm going to write up a few tutorials with the launch of my pre-alpha I'll be starting a small website with it, a wiki, and a JavaDoc (later on). 

mm yeah, being able to work with meshes as objects is a lot easier but being able to manipulate things at the vector level is nice and flexable.. just have to write a helper to return spheres if you are going to be using heaps of them.

hmm, as far as requests go.. its hard to say.. there are an almost endless list of features you could add to an engine that would be handy but having tons of features isnt the point of the project.. im guessing. I think having a mesh class and the standard set of 3d primitives inheriting it with handy constructors (like the new Sphere(radius)) example i had above would make getting started significantly easier.. the mesh class could just have an array of vertices, the texture (or just flat color if textures arent supported) and each class inheriting could calculate vertex positions based on constructor parameters.

then when you add the primitive to the viewport at a certain x,y,z (and posibly tilt/rotation) it works out where the vertices need to go relative to the viewport

seems like a lot of work but it would make things super simple

The problem with using a precompiled set of vertices is that resolution isn't under control of the actual developer. I've written algorithms to create triangle fans of objects before and Its not to terribly hard to do once I have my calculations down. So as far as the pre-compiled class of primitives won't really go with me. But the whole constructor parameter based objects is a given. All of the primities are going to be polymorphates and have the flexibility usually desired with a good engine.

 

As far as positioning to viewport isn't hard at all. I've already completed that part of the engine with buffering objects and culling back faces etc. GLUT helps show me where to start with the optimization and creation of utility files. I've based a lot of the Engine off of a logical base.

 

GameObjects extend Object (Buffers and Vertices) and Renderable (shaders+texture+vertices/normals) and implement Transform (Position & Rotation class)

All of the classes are going to be open, its an open source project as I only view to make money off of the games I make from it and donations to the actual project itself. I've been building a terrain engine for this as well (game idea for myself needs it). Tho it will be quite a burden to finish with complete specular normal and diffuse mapping its going to be worth it. I've seen Unity for example not have normal mapped terrains natively and that really kind of bothered me. 

ALSO: After I finish these few things on my to-do list I'm going to be optimizing the crap out of this engine to the point to get some frames back from abstraction problems between openGL and such. LWJGL is very optimized and it's really nice to have something that is as optimized as it but I still need to work on my engine as far as optimization goes.

EDIT: I'm going to be posting a website soon showing what I have and have not done. I'll link as soon as I can. 

awesome.. not much of a graphics person but i'd definately have a play and submit patches if i make any changes.. i'd probably work on utilities rather than the core engine though

i are coder. i can see game?

I don't actually have a game for the engine as of right now but I can whip something up when I have a stable build up and running. Its really hard at this point when I'm inbetween patches to have it run on 0.02 so I'm stuck running static models from specific files for now with 0.01. 0.02 should be really close. Its had almost a complete make over.

I will have a look through your code. I have some experience in XNA, and also in java. Sounds like a fun project you have there.

Well some of the 0.01 Code is available in the Google Code SVN: https://code.google.com/p/jglx/ I'm going to be working on reconstructing 0.02 since I found a massive buffering bug I'll be reverting to 0.01 for a bit while I reconstruct 0.02's outline. I'll also be working on the Wiki later tonight.

Some of the V0.02 Code is up. I decided to add the versions into different packages so you can just really extract them into a different project for an engine or if requested I'll create a good jar for it and you can just use the specific version upon package. I'll be updating the SVN often. If anyone wants to do some graphics for the front page of the code and maybe a logo I'd give complete credit and would use it. I'm keeping everything from the start to show how you can build something from nothing.