I think java is good for you to stick with. There are some 3d engines available, I have not used any but http://jmonkeyengine.org/ looks to be one.
Don't sweat the language, just keep practicing and working on what you're doing. I personally find writing a project goes quicker in Java, and even faster yet in Python. It all depends on the application you are setting to create, you will generally use the language you are most comfortable with if it is your own, or the language the team is using. You will find some cases where a certain language you do not yet know proves to be worth learning to build the application easier.
But as I said, for now java is just fine, in my opinion.
Java's builtin 2D capability provides all the core functionality a top down tile based game would need for the graphics and I/O part but you'd need to develop most of the framework around it.
Libgdx is often touted as the go-to for this type of Java game development.
Or if you were so included you could go the OpenGL route with lwjgl or an engine like JMonkeyEngine
Jmonkey3D(http://jmonkeyengine.org/) and JOCL(http://www.jocl.org/) are two reasons I like java. You can do just about anything with it on any platform with any of a million free libraries... what's not to love?
If you want a game engine with an editor, jMonkeyEngine
If you want a code-only framework, LibGDX
If you want to delve into low level concepts and graphics programming, LWJGL
All of these allow you to write 3D games in Java that can be exported to Android. LWJGL would naturally be more difficult, though.
>My issue is that the language itself is not good enough to support a game engine, which is why there are none made for Java.
https://github.com/libgdx/libgdx http://jmonkeyengine.org/ https://www.lwjgl.org/
Maybe open up google before you talk shit. Is Java as popular as Unity or UE for desktop game dev? No. Does it have anything to do with the language? No. You absolutely can write a good game in Java e.g. Slay the Spire is a recent one.
>Honestly, from my limited experience and knowledge
Ahh there we go, you just have no clue. Well at least you admit it openly.
It's the style that Notch choose. All bet easy because he was a one man show in the beginning and not an artist. The prettiness had nothing to do with Java. MC uses the same GL bindings library LWJGL that the jMonkey engine uses and it looks fine.
If you are interested in physically based shading itself there are a lot more resources around, for example this great blog post.
The problem are Unity-specific resources and a book about that probably wouldn't be the best idea. It's quite a niche market and also nobody guarantees that the internal lighting won't change in an update tomorrow. (Which would be really bad for my small shader, so let's hope the guys from unity stay sane!)
I'm using jMonkey (java), and while it is a bit like using an ion cannon to drill a hole it handles all of the rendering dirty work while still allowing me to output raw geometry, meaning that I can use voxel-specific optimizations and it will then further optimize raw geometry. It also has lots of other game engine features (sound, physics, network, etc) that will be useful for later development.
jmonkey seems to be the best one out there, full featured and easy to learn with lots of documentation.
I'd suggest starting with JMonkey, there's tons of documentation and info floating around, and they have a helpful forum too. This would save you the trouble of building your own engine while allowing you to build relatively low level stuff easily(IIRC first tutorial starts you with building a 3d cube and texturing it via code).
I'm surprised no one suggested jMonkeyEngine - It's great for anyone who is familiar with Java, but not with 3D game development. Opposed to Unity or other "Beginner-Friendly" engines, you control everything and get to code everything, not just a bunch of scripts you drag 'n drop on game objects in a fancy preview window... One of the developers explains it pretty well: > If Unity and UE are the Legos of game development, jMonkeyEngine is the crazy uncle who just gives you the key to his entire toolshed with its powertools and lose wires and just says “try not to get yourself killed”
I think you can, to a certain extent, apply this to java game development in general ;)
If I were you I'd do some Java on the side to keep your skills fresh, but pick up C++ and Unreal or C# and Unity for game development. If you really want to focus on Java, then you might want to check out jMonkey.
How new to programming are you?
I'd recommend picking up a 3D game framework. I'm currently using jMonkeyEngine, and loving it. It was easy to pick up and start making a game. Their tutorials are very helpful.
However, when it comes to 3D game programming, you'll find that asset creation (3d models, textures, etc) and animation is the bulk of the work. So if you're looking for something a little lighter weight and simpler, it might be a good idea to see what you can accomplish with a 2D game framework.
I have been at in the same position as you are and know the feeling man ! o I would say go for Unity for many reasons :
It's an industry standard
It has a very active community
You can do prototyping very easily
If you really want to stick to Java then you can have a look at these game engines :
I played a little bit with LibGDX, it's interesting to play around with but I dropped it when I started to explore Unity.
As /u/antigenz said : > All your programming career will be a never ending story of learning new shit.
C# and Java are pretty much similar, so you shouldn't have any problems to switch from one language to another BUT don't be afraid of learning new stuff. Languages, libraries and tools will always evolve, you should be able to embrace the change with minimum discomfort. In other words, learn to learn !
EDIT : Removed an irrelevant personal comment
jMonkeyEngine. The site is undergoing a redesign so just GitHub, downloads, and forum are working. Based in Java and the NetBeans IDE, it has functionality somewhat similar to Unity.
There is jMonkeyEngine which is a game engine. It supports drawing all sorts of primitves (boxes, spheres, cylinders, ...). This is probably your best bet if you just want to get your program done quickly.
Then there is lwjgl which offers low level bindings to OpenGL. This gives you much more control of what actually happens on your graphics card but also is more work. You'll have to create your own meshes, do your own memory management and write your own shaders.
Only use this if you want to know more about how low level hardware accelerated rendering works.
There is also Java3D but it's pretty old and I don't have much experience with it so I can't tell you much about it.
Unfortunately design patterns are tough to come by. I've only been able to come across them by happenstance. Here's the few I've seen:
Yes, thank you.
There are also a few handy sites that give you maths recipes for common gamedev applications. For example, subtracting a vector position from another vector position to get the vector direction from one to the other.
I recommend the Maths Concepts section of jMonkey Engine's documentation as a great maths resource.
Thanks for all the kind comments. We appreciate it. Cant wait to show you all, our next preview video.
If you want to follow the progress you can either subscribe to the RSS feed on the Progress site or you can join the "Forging life" group at this site: http://jmonkeyengine.org/groups/forging-life/
There's jMonkeyEngine for 3D games.(currently version 3 alpha4) For 2D game engines,there's JGame and GTGE . I used GTGE for a day.nothing fancy. A simple framwork for drawing and moving pics,etc. Although i wonder why i didn't choose JGame ...
For game dev look at http://jmonkeyengine.org/ . I can’t really say if it’s good or bad but it’s a game engine for Java programming.
For coding practice if you’re still learning then any kind of practice website will help you. codingbat codewars etc
That said just play around and try to build things. Don’t try and build anything great build stupid things. Make large dumb projects and learn from them.
If you are already a Java dev, you can always go with something like JMonkey or Lightweight Java Game Library. I have written a project in LWJGL, was easy to use, don't know as much about JMonkey but it is my understanding it is written on top of LWJGL
What's really happening here is that a result of change to outside pressure. A lot of people are going to be the same distance they've always been.) I mean, I have no problem if people want to use Java, you might look into JMonkeyEngine.
If you want to use Java, you might look into JMonkeyEngine. I used it to make a Minecraft-like game years ago and I liked it.
Other options include Unity3D and Godot. Most people use C# with Unity, but it's similar enough to Java that it's not hard to learn if you don't already know it. Godot uses its own scripting language which is similar to Python, but it now supports a few other languages including C#.
I integrated LibGDX's Behavior Tree AI module into our roguelite, vaporwave and procedural game, which is made use the jMonkey Engine 3.1.
I then created the following behavior :
Follow enemy
Search the enemy's last recorded position
Return back to initial chase position
Stop the chase after a certain amount of time
Attacking the enemy resets the timer
I'm new to AI programming and still have a lot of work to do for making better behavior trees. I think it's really easy to make spaghetti behaviors. Do you have any tutorials on how to create a "good" behavior tree?
I integrated LibGDX's Behavior Tree AI module into our roguelite, vaporwave and procedural game, which is made use the jMonkey Engine 3.1.
I then created the following behavior :
Follow enemy
Search the enemy's last recorded position
Return back to initial chase position
Stop the chase after a certain amount of time
Attacking the enemy resets the timer
I'm new to AI programming and still have a lot of work to do for making better behavior trees. I think it's really easy to make spaghetti behaviors. Do you have any tutorials on how to create a "good" behavior tree?
Have you thought about just straight up writing a game in Java? As you go along you'll wind up solving common game development problems just as a natural side effect. If you are interested I would check out LibGDX: https://libgdx.badlogicgames.com/
There are some other Java frameworks/toolsets like JMonkeyEngine and PlayN as well: http://jmonkeyengine.org/ and http://playn.io/
I agree there is some extra overhead using Java over raw C or C++. However, the performance impact is often negligible if you pay attention to memory management, like you have to in C & C++. I disagree Java isn't useful for large scale 3D game engines, just have a look at jMonkeyEngine:
http://jmonkeyengine.org/showcase/
Java even is capable of virtual reality development, which has very high demands on performance. Keep in mind, the really demanding sections can be done in native code (like LWJGL, physics simulation & sections via just-in-time compilation).
If more games were coded in Java, we'd have more choice in running Mac OSX & Linux, while still playing our favorite games.
C++/C is the standard because it does provide raw performance (if not always significant), many engines already are developed for it, and most gaming users are already on Windows. Java is still a very viable option for gaming, though. I wish more people cared about cross platform compatibility & not allowing themselves to be lazy during development (even if Java does allow it).
I think if I wanted to do a rewrite I would use Java. I am much more proficient in it and I personally know more Java devs that could possibly be interested in helping out.
Looks like there are some libraries I could use which happen to be open source:
If you guys were not interested in going that route I understand. But it might be something I dig into. If I got permission to port the code and assets that is.
A video game doesn't have to be a large project. There are game engines and frameworks available that make it really easy to do. In fact, if you are interested in making games, they can be a really great learning experience.
For java you can use lwjgl, jMonkeyEngine, and Slick2D (there are obviously many more available but these are the ones I've used).
Slick2D and jMonkeyEngine are both built on top of lwjgl. It's been a while since I've used any of these but I think Slick2D is easier to use for 2d games than jMonkeyEngine.
Go to /r/gamedev for learning resources. If you decide to go this route just remember to start small. Make things like pong, asteroids, scrolling shooters, then make platformers and then do 3d stuff.
Sorry for the wall of text. There are really a lot of other things you can do if you aren't interested in video games, but they are easy creativity wise and really good for people who are math oriented.
off the top of my head, jmonkey is DK2 compatible, plus Quake 1 and 2 engines are free and open sourced now, just get a level editor like Quark and the Rift support from Oculus share and you're ready to VR dev!
If you really want a GUI (ie buttons, texte fields, forms, etc) then I'd also recommend JavaFX. It has also a component to display html content (web view) and direct graphical manipulation at pixel level via Canvas API so it could still be a good choice in any case...
If you want to do a more purely graphical RPG, SuperNintendo-era-style for instance, then I have heard good things about jmonkeyengine as an openGL game engine. Http:// jmonkeyengine.org/
since you're familiar with java already, i recommend the JMonkeyEngine, its open source and has lots of features. but the aspect i like the most about its how easy it is to use.
you will probably want to start working with a game engine. a friendly community for a nice game engine (jMonkeyEngine) is here
Check out the engine here
They have a lot of examples and it uses java, a programming language that is quite easy to learn.
you should also look into 3D modeling. maybe you are into that. There is a huge need for 3D modelrs..
I don't know exactly how they did it, but it looks like there are two different things at play here. First the geometry is almost certainly textured quads in 3D space, or otherwise excellently faked. That's part of what gives scale to the images (obviously), the second part is the post-processing done. There are a quite a few passes being done, but the most obvious is called Depth-of-Field (http://http.developer.nvidia.com/GPUGems/gpugems_ch23.html), the second is a grain filter (http://jmonkeyengine.org/groups/user-code-projects/forum/topic/filmgrain-post-processing-filter/)(sorry the first one I found) which gives the softness and the graininess to the foreground and background. That also will give the soft edges to the leaves and such in the space outside the center (focal point). Just postulating though.
The LWJGL Wiki has some tutorials, but if your goal is to get a game built quickly, I'd highly recommend JMonkeyEngine. It comes as a Netbeans plugin, and takes care of a lot of boilerplate for you. You don't have to code the WASD keys, for instance. And you don't have to write your own game loop. It has OpenAL and the Bullet Physics Engine already built in. In short, you spend more time thinking about your game than you do about your framework.
What sold me on it was the ability to drop in an entire scene from a zip file. In about eightly lines of code, I was able to put a brick wall, a teapot, a ninja, and a rotating elephant into a town square with 4-5 buildings and cobblestone pavement. It was so easy it felt like cheating.
And the tutorials are awesome.
Also if you know java or anyone else looking at this and wants to give it a try, I created simple voxel starter kit using java, take a look here:
its easy to understand, read the thread and check out the sourcecode...
As a follow-up, I found this page that talks about your game.
I'm not sure if this is your official dev blog/ website or not, but regarding my previous comment, you need to have something more visible! I had to google "3079 action rpg" before finding anything. Most people aren't going to want to go through that much trouble and you'll want to shove a link under their noses.
You have a lot to show, and again, I think part of the reason why you're having trouble finding assets is because you're not showing off.
In my opinion the choice of language at this point is largely inconsequential. I'd recommended using Java for your game simply because you can directly apply what you learn from your course to your game programming and vice versa.
As far as java game engines go JMonkeyEngine looks pretty decent and seems to have a solid community. It seems to support importing of Ogre assets (blender can export to ogre via a plugin).
Try this JMonkey I've not really done a lot of 3D programming but I good place to start is something like webGL since you can code in js and see your changes instantly. These skills are then transferable to most other openGL frameworks.
Thanks for the testing offer!
I spent a long time looking for a cross-platform engine to use, I agree that jMonkeyEngine is the best based on its price. I've never used it before so making decent RPG controls and gameplay will be... interesting.
I was looking at their website last night saw this, until the dev commented I was having second thoughts about my engine choice.
jMonkey is not bad, if you are into java. They even made an IDE for it based on netbeans.
http://jmonkeyengine.org/wiki/doku.php/jme3#tutorials_for_beginners
In my experiments with it, its pretty good. There were some stability issues with Ubuntu but not on windows. The documentation is excellent, and the forums are active.
Currently Im using GIMP -> Blender 5.x -> jMonkey3