Upgrading a games graphics engine

Started by
3 comments, last by Krohm 12 years, 11 months ago
I am trying to upgrade the graphics engine for a small game made around 2003. It uses OpenGL 1.1 I believe. I am not an expert at programming in C++ by any means, but with good advice and a place to start I think I can pull it off. I know I will need to use shaders but honestly that is the only thing I know about this project. I want to add parallax occlusion mapping if possible. Any advice is welcomed (unless your advice is to give up!)

Thanks in advance,
DJ
Advertisement
I was soooooo tempted to say "give up".... ;)

OK, you're biting off a hell of a lot here and jumping straight from almost-zero to something like parallax occlusion mapping is not a trivial thing at all.

You'll need to learn some C/C++ first (I assume that the engine is written in one of those languages). You'll need a decent grounding in these if you're to even begin to get anywhere, as you'll be reading and interpreting someone else's code, trying to figure out what it's doing (and why it's doing it). Writing code is easy, reading code is hard. If you're not comfortable with concepts like pointers and recursion you'll be stuck very quickly.

Then you'll need to learn some OpenGL. You don't say what kind of knowledge you have there, but I'm guessing from the context of your post that working through some tutorials would be a great idea. You also need 3D rendering concepts, and you need to learn old-style OpenGL (immediate mode/fixed pipeline) as well as new-style (VBOs and shaders) to be able to pull off a project of this kind.

This is all pretty steep stuff, and I personally think you've set your ambition a mite too high. I'd say a better approach might be to row back a little and take it in smaller more achievable chunks. So work through the tutorials, build up your knowledge, maybe write a standalone renderer for it's map or model format just to get comfortable with the data sets, and see how you feel about that before deciding on how (or if) to proceed from there.

Direct3D has need of instancing, but we do not. We have plenty of glVertexAttrib calls.

Pick up a book really. Its not impossible but if you have a full-time job, and you arent committed to at least 4 hours a day for about a month, then you probably will end up quitting and barely getting anywhere.

NBA2K, Madden, Maneater, Killing Floor, Sims http://www.pawlowskipinball.com/pinballeternal

So what is the interface you have for rendering things in your 1.1 engine? Is it simply a bunch of direct calls to glVertex? If you have an abstraction layer to hide behind, it might be a little easier. Something like mythingy->render(). What do you currently have to work with? I think you might be able to get something up and rendering pretty quickly, then you can flesh it out from there, but knowing what you have as a starting point will make it easier to give advice.

Giving up won't help. You already have a game, a game that works (I hope). Sounds like you know enough to be dangerous, so here are some websites to help keep moving forward:

http://www.clockworkcoders.com/oglsl/tutorials.html
http://www.lighthouse3d.com/opengl/glsl/



Cheers,

Bob

[size="3"]Halfway down the trail to Hell...

I am trying to upgrade the graphics engine for a small game made around 2003. It uses OpenGL 1.1 I believe. I am not an expert at programming in C++ by any means, but with good advice and a place to start I think I can pull it off. I know I will need to use shaders but honestly that is the only thing I know about this project. I want to add parallax occlusion mapping if possible.
I'd suggest to have at least 2 iterations. First iteration: do not add any feature, just upgrade to 3.x or 4.x. The game will look the same, but no deprecated features are present - in particular, no display lists and no immediate mode as well as no client-space vertex arrays.


Second iteration: add features. Perhaps you haven't noticed POM needs (normals+heightmap) to work, you're not going to pull those out of thin air (although I admit just running a filter on albedo maps produces acceptable results).

Previously "Krohm"

This topic is closed to new replies.

Advertisement