Jump to content
  • Advertisement
Sign in to follow this  
Retsam

Deciding on a Game Engine

This topic is 2748 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

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.

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites
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?

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

[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.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!