Hydro's Game Engine

So i’ve been working on a game engine. It is 3d and the first game I want to make with it is a 3d shooter. It is a work in progress.

My favorite part of my game engine so far is that the code that you write looks nice and polished, even though its down to the core. I tried to avoid as much hard coded things as I could.

It uses 2.9.3 lwjgl, but i use vaos and shaders, nothing fancy. I use the Display class.

My intention here is not to promote my engine or ask others to use it. I’d like it to serve demonstration purposes and helpful methodologies.

It comes complete with…
Minimalist obj model loader
Gui using pixels and screen coords over ratios
Lua Engine and Customizable default library support
Multitexture support
Openal sound, using wav
Keyboard input framework
I ripped lwjgl Keys class so I could customize it for minimalists everywhere
Scenes from file
Fps and delta time class
Uncustomizable flat terrain generation (does it in batch too, specified size and triangle count)
Dynamic vao/vbo
Twl pngdecoder class
Materials for shaders
And probably more
Custom positional classes (vectors, matrices)

Support ogg audio
Batch rendering
Configuration files for rendering and windows
Draw text (seems odd to include cuz hardcoded)
2d gif support (dynamic img)

Just load up the one in lib
And use LWJGL2
Note that build uses LWJGL2 Util (I just finished up migrating from it :))

Download link

Looking for suggestions too - update my wip.


am I missing something?

What features are you going to include in your engine that aren’t present in other engines, such as jMonkey and Unity?

The game development community is saturated with people who think they can create the next big engine, or people who think that creating an engine can benefit others. These people are deluding themselves. There are several game engines which use Java as the primary programming language. We’ve got jMonkeyEngine, Ardor3D, Jake2, Jogre, SilenceEngine, Slick 2D, LibGDX, PlayN…the list is pretty long. Some people use other libraries, like Java2D and even JavaFX. Some engines are old, others are new and grant the users more control and offer more freedom, with new features that improve the performance, look&feel and everything about the game.

I advise you not to become like the aforementioned people in the game dev community. Don’t attempt to release your game engine for everyone to use, because frankly speaking, we probably won’t end up using it. It’s not because we dislike you. We don’t have anything against you. But after SilenceEngine (which is a really ambitious and feature-rich engine), I think JGO doesn’t really look forward to yet another engine.

But that’s UNLESS your engine has features that we’ve never seen before, or if your engine can boost Java’s reputation in the game development community, like what jME did several years ago. We certainly look forward to something revolutionary.

However, it’s perfectly fine if you continue to develop your engine. You can use it for your own games, or you could be like me. For every project that I start, I create a new engine from scratch using OpenGL (LWJGL), each time trying my very best to improve and optimise my code. It’s an effective method to learn and master the skills that you’ve picked up.

Good luck :smiley:

Thats pretty much what i do too. I like how you are cautious of my goal, but i never told you my reasoning. Its learning and good resources to others, especially if they run into a pro blem that is locking them. Say me learning projection matrices a while back. I was locked into cant go on with that.

Open source learning tools which work are great!
Articles trying to explain implementations is not so great! (NeHe annoys me)

My current engine doesn’t really lack much but what I said. Although idk like to support things other than png and obj files. I never learned the formats of others and i don’t even fully support obj files (absolutely no need to use g and o).

It is different from unity because its open sources and not going to be like unity what so ever. Unity is plain gross to make games in. As for jmonkey, i don’t know enough about it to make a statement other than mines a wip that is going to be the core to all my games probably. Jmonkey is probably locked source, documentation on implementation, or both.

jME is open source: https://github.com/jMonkeyEngine/jmonkeyengine.

(I’d hate to derail OP’s thead but…)

Why put that feature in an engine? What we need is a library for physics, graphics, audio, input, whatever and people mesh whatever they need in the middle, making one all-encompassing piece of software to me sounds overkill.
If you don’t like how your graphics, physics, audio engine does things use another one or make a pull and change it.

As for learning from re-inventing the wheel, I’m all for it but it won’t make you a better game dev, a better game engine programmer maybe.

I totally agree with you. We have little to no support for some serious audio libraries and stuff. What we have is minimal. But you know… Just use paulscode.
Understanding the background and how opengl stories does make you better than say unity, for you understand and have a lower level to work with which grants performance.

Where is this aforementioned “nice and polished” code?

Tell me why I should care about using your engine over my code which I already know, or another engine which has been used in hundreds of games.

Quote from WIP board rules (Yes, I know that this thread is under shared code):

[quote]N.B.: Threads plugging Game Engines are frowned upon and shipped to the Archived Projects board upon discovery by the kind mods. Show off and/or publish a game using your engine, not the engine itself!

Let me yet again clarify my reasoning for this. I’m not saying use my engine for your games. I’m saying check it out. Big difference between advertising it. Wanna check out out? I’ve yet to have anyone interested/ask. Over time I was going to ask a mod to delete this if nobody wanted to check it out.

Longarmx: Like you said, we are in shared code, but there isn’t even any code in sight.

Anyway, This thread is confusing and probably in the wrong place.

[quote]I’m saying check it out. Big difference between advertising it
“Hey check this out” <- all advertising ever.

Please, just share your code. I care less about the reasons you shared it and just want to see what you have put together.


As you can see there are some people that don’t like the site of game engines on this forum :slight_smile: I under exactly where you are coming from, I think building an engine from scratch is a) a good learning exercise for the curious and those that want to learn how b) for those that like to create and want to be involved in everything and c) for those not worried that they will be the only people to use it. It looks like you fall in to all three of those which is great.

So now for some feedback :

  • It looks like you are in the early stages of development because the core features you have are basic. Below is a list of features you can look to add if you haven’t already (I’m no expert in engines neither but these are features I would want).
    - Lighting
    - Shadows
    - Text
    - Animation of GUI elements
    - Skeletal animation of 3D meshes
    - Particle System
    - Physics engine
    - Collission detection
    - Effects such as reflections / bloom etc
  • Loading resources is key to making things easier for engine use so adding other loaders will be useful
  • If you are using LWJGL you might want to upgrade to version 3
  • As other people have already said, if you want us to look at your code then you need to link to it, if not then make it clear in the opening post that you just want advice on features

“make games, not engines” - pretty much every game developer ever. :smiley:

but in all honesty good job! making something like that is not easy.

Thank you for not instantly putting down an idea with half a mind. I thank you for the respect you have.
A lot of the things you’ve mentioned have to be implemented at the core with shaders, which honestly can’t really be included because of how embedded they are supposed to be. Nonetheless, animation is a key thing that needs to be implemented.

Everything in that list except good lighting and postprocessing can be done without shaders. =P

What? That doesn’t sound stable. I’ve never heard of it being done outside of shaders.

What exactly are you referring to? Skeleton animation can be done as long as you can render a mesh if you do it on the CPU. Particle system also just requires being able to draw a mesh. The “worst” one is shadow mapping. Generating the shadow map is easy without shaders (just draw with different matrices), but using it is harder; you’ll essentially have to use multiple texture coordinates and the legacy multitexturing system to do it and I wouldn’t recommend it, but it’s technically doable. Hell, even simple lighting with shadows is doable with legacy OpenGL. Shadow mapping predates shaders by quite a lot.

fixed pipeline shadow mapping : http://www.paulsprojects.net/tutorials/smt/smt.html

Seriously, I strongly recommend AGAINST coding this. It’s a completely useless skill. Learning shaders to do this is significantly faster to learn and a better skill to have. All that shit is emulated with shaders by the driver internally anyway.