Deciding on a Game Engine

Started by
7 comments, last by Retsam 13 years, 1 month ago
I'm considering starting a project, but before I do, I want to figure out what engine I would use to make it.
My background, I'm a Computer Science major, so I've got a good programming background, but little experience programming graphics. I've had limited experiences in game design and programming.

Right now I'm interested in possibly trying to make an RPG. I'm currently brainstorming and documenting the project, and as that progresses, I'm trying to work out the concrete details. This obviously leads me to the question of a game engine.

The first question is "I do want a game engine, right?" I mean, I'm a decent programmer, but knowing nothing of OpenGL or DirectX and not having much success learning in the past, I'd rather not tackle that right now, which leaves me looking for a game engine of some sort. But, on the other hand, I do want to be doing quite a bit of the coding, not using a tool that takes the coding out of the project.

As for language, I'm most comfortable in Java, so that's my ideal choice, but I also know C++, Objective-C, and Python, so I could do one of those as well, (and I'm not even that opposed to learning a new language; I usually pick programming languages up pretty quickly).

And, the game is going to be 2D (or possibly isometric). I want to mess with graphics as little as possible, so I don't want 3D, and for most RPGs, 3D is unnecessary. So ideally I'd like to find a tool that is aimed at making 2D.

Any direction at what I should be looking into and trying would be greatly appreciated.
Advertisement
You should check out Slick2D. It is a game library written in Java, and hardware accelerated. Because it is a library, there is plenty of programming you will need to do. It provides routines for a lot of common functionality, but how you combine that and all of your game specific logic will be up to you.
the worst you can do when starting up, is using and learning to maneuvre someone elses work
you will learn alot of useless, and maybe wrong stuff with the engine itself
why not make a simple game of your own? and learn even more in the process
it doesnt have to be all that, but just in case you choose OpenGL for portability, try to avoid learning the deprecated stuff unless you want to concentrate on the basics of 3D math etc.

the worst you can do when starting up, is using and learning to maneuvre someone elses work


I'd agree. A lot of game engines these days are messy and just as difficult to pick up as OpenGL or DirectX. I was in the same situation as you two months ago. I spent three weeks trying to use Ogre3D, a week trying to use Irrlicht, two weeks learning OpenGL, and a week learning DirectX.

At the end of each of those periods of time, with Irrlicht and Ogre3D, I was extremely frustrated and had no idea how to do anything beyond the scope of the tutorials. After learning DirectX, I was pretty overwhelmed by the giant amount of code necessary to get something simple written.

However, after working with OpenGL for two weeks, I could render 32 thousand textured cubes (I'm working on a Minecraft clone) with upwards of 1400 fps. I also had physics, collision detection, and I wrote my own little class to display a framerate. That's 3D OpenGL programming, and I was able to learn about their immediate mode, vertex arrays, display lists, and vertex buffer objects. I'm currently using VBO's, which is what's allowing me to have such a fast framerate for so many polys.

2D OpenGL would be even easier. All you have to do is worry about drawing flat triangles. You don't have to worry about loading models, or shaders or anything. Your performance would be great because 2D stuff is much faster than 3D. The other thing about using OpenGL with C++ is that it's blazing fast. OpenGL is as close to the graphics card as you're going to get, and C++ instead of Java doesn't require a virtual machine, which is automatically faster already. If you're thinking about drawing images for your characters, you don't even need to render triangles, just make a "Pixel Buffer Object", and you're basically passing the pixels rather than a set of triangles.

As you can tell, I'd strongly suggest learning the lowest level stuff, and taking it from there. I find that it's much easier to pick stuff up, and it's also more impressive to a gaming company to see that you know a standard graphics API rather than some off the shelf engine that some dude wrote.
The message I'm getting here is that I should just learn OpenGL, which I suppose I can understand. Is there a way that I can do this in Java, rather than C++? (Or rather, the best way, I assume there are a few options)

Also, one reason I had shied away from using OpenGL was that I was mostly intending to use sprites, and I've always imagined OpenGL to be more for modeling rather than for using preexisting graphics. Is this just a misconception, do people use OpenGL for that? Or am I looking at this the wrong way?

The message I'm getting here is that I should just learn OpenGL, which I suppose I can understand. Is there a way that I can do this in Java, rather than C++? (Or rather, the best way, I assume there are a few options)

Also, one reason I had shied away from using OpenGL was that I was mostly intending to use sprites, and I've always imagined OpenGL to be more for modeling rather than for using preexisting graphics. Is this just a misconception, do people use OpenGL for that? Or am I looking at this the wrong way?


I think a lot of purists will tell you that you need to learn the low level stuff first. No, you don't. The great thing about High level languages is you don't need to know the low level stuff. You can treat the graphics pipeline like a black box and focus on building your game. The worst thing that can happen is you get frustrated trying to do something simple like draw a polygon on the screen and you never get around to building the actual game.

Try out something like PyGame or XNA or even Flash - you don't need to worry about rendering the low level stuff, and the game loops are baked in. Plus there are plenty of tutorials out there.
-Building DIY games since 2010. Daydalus.net

The message I'm getting here is that I should just learn OpenGL, which I suppose I can understand. Is there a way that I can do this in Java, rather than C++? (Or rather, the best way, I assume there are a few options)

Also, one reason I had shied away from using OpenGL was that I was mostly intending to use sprites, and I've always imagined OpenGL to be more for modeling rather than for using preexisting graphics. Is this just a misconception, do people use OpenGL for that? Or am I looking at this the wrong way?


Slick2D, which I mentioned before, has good support for sprite drawing. If you do want to go more low level in Java there is LWJGL which will allow you to access all of the OpenGL functionality directly. Incidentally, this is the library that Slick2D uses for hardware acceleration.

The message I'm getting here is that I should just learn OpenGL, which I suppose I can understand. Is there a way that I can do this in Java, rather than C++? (Or rather, the best way, I assume there are a few options)

Also, one reason I had shied away from using OpenGL was that I was mostly intending to use sprites, and I've always imagined OpenGL to be more for modeling rather than for using preexisting graphics. Is this just a misconception, do people use OpenGL for that? Or am I looking at this the wrong way?


Java OpenGL wink.gif
They hated on Jeezus, so you think I give a f***?!

[quote name='Retsam' timestamp='1299677777' post='4783537']
The message I'm getting here is that I should just learn OpenGL, which I suppose I can understand. Is there a way that I can do this in Java, rather than C++? (Or rather, the best way, I assume there are a few options)

Also, one reason I had shied away from using OpenGL was that I was mostly intending to use sprites, and I've always imagined OpenGL to be more for modeling rather than for using preexisting graphics. Is this just a misconception, do people use OpenGL for that? Or am I looking at this the wrong way?


Java OpenGL wink.gif
[/quote]
So, as of right now, I think I've gotten it narrowed to JOGL vs LWJGL. I googled the two of them and could only find rather old comparisons. It's sounding like LWJGL is going to be the way to go, but I did read something about a lack of documentation in some of the discussions, and if JOGL is better documented choice it might be worth considering.

This topic is closed to new replies.

Advertisement