This project started out as a simple mesh loader so that I could get to grips with OpenGL. Since then I carried on developing it to the point that it could essentially be used to create games. Okay so calling it an engine is a little premature but it is definitely the workings of a solid renderer. This page is where I will be showcasing various aspects of the "JBEngine". If you would like to see the processes I went through to create it then take a look at my blog.
Loading Textured Models
I added Phong Lighting to the project as without it any game would look pretty simplistic. Below are a couple of videos that show off the lighting that I have implemented. I would love to at some point implement deferred lighting but that is a long way off and with the current game ideas I have there is just no way to justify it.
This next demo shows off a combination of the Phong lighting and also the use of transparency on the textures for the light source. There is still plenty more to be done in this area and the algorithm for the specular lighting still needs refining.
The JBEngine is going to support a fully functional Entity Component System, this means that it will focus heavily on pieces of seperate pieces of functionality that work independently from one another. This allows for great flexibility and re-usability. The exact working of the component system are still being defined as it gradually changes slightly to meet the needs of the current tasks. Once I am comfortable that the Component System is at a standard that I think It will remain the same for any case then I will show the workings and the UML diagrams for it.
The JBEngine has built in Physics that can be accessed for use with collision detection and resolution within any game. In the Video below there is a visual representation of the Physics being used in a squash game that I am currently making. The Physics Engine that is being used is Bullet which is an open source Physics Engine. I have recently changed the physics engine to nVidia's PhysX as the documentation was a little sparse for Bullet and It seemed like it was going to be a lot of work to achieve what I wanted. I have still got the ability to switch between the two fairly easily so if I do need to switch back the option is always there.
I've added Skeletal animation to the engine which is a huge advancement towards creating games that look and feel professional. This was a large chunk of work and took a while to get right, specifically getting all the bone transformations correct and dealing with the Skinning. Here is a video of the animation in action:
I have recently Implemented Networking into the JBEngine. Currently that is the Client-Server Model but it wouldn't take much work to implement a P2P model. The Library underneath is called RakNet and deals with all the transfer protocol complexities allowing me to focus on the data that needs to be sent to and from the machines. The Library uses a UDP protocol but has it's own built in layer for dealing with Packet loss and ordering.