Sign in to follow this  

Getting started with procedural game engine programming

Recommended Posts

studentTeacher    1077

Hey! Good to see someone with similar interests as me :) I'm no expert in the field, but here's my experience:


1.) I generally like OpenGL because it's cross-platform. I work on a mac so DirectX is out for I don't have much advice here.


2.) Depends on the language....I use Java and therefore follow the LWJGL tutorials. For C++, I'd probably go through the NEHE tutorials. There's also plenty of general openGL documentation all over the internet, as well as a few good programming channels on Youtube that do good tutorials (For example, I followed Oskar Veerhoek on youtube to get FBO's and such ironed out on my game engine using LWJGL).


3.) There's many good things online, for example this. That procworld website introduced me to using Grammars for creating procedural buildings and other structures. I also HIGHLY RECOMMEND Texturing and Modeling a Procedural Approach by David'll walk you through noise, fractals, perlin, texturing, terrain, etc. I constantly use it as a good source of procedural knowledge.


4.) Many things exist for game engine architecture, design, etc. Theres the David Eberly books (he seems to know his stuff, right...?) on game engines. They are good examples of a full game engine and documentation and discussion on why he made choices, but most of it is tailored to a general purpose engine. I've learned the most form looking at source code and documentation of engines that are already available to learn overall architecture tips.


As for language, C++ is fine and it's all up to you! I chose Java because I was more familiar with it and I could code so, so much faster in that language (5 years experience compared to my 1.5 years in C++). Since LWJGL is available for Java, that was great! 


Good luck and have fun! If you're interested start a journal to document your work :) I'd love to see where this goes.



Share this post

Link to post
Share on other sites
DejaimeNeto    4221

1 - With DirectX you'd have a harder time porting if you ever want to make your engine work on a Mac, Linux, PS3/PS4. But other than that, there's not much difference as far as I can tell. Maybe someone more experient can inform you better than I can. I am used to higher-level rendering such as Ogre3D, Gizmo3D and SDL...


2 - OpenGL SuperBible

The book goes through a lot on OpenGL and is pretty up-to-date (July 2013).

I think it is on the sixth edition already, so I guess it is a pretty proven title.

The only problem is that it only covers OpenGL, so no peripherals here, completely focused on rendering.


4 -  Game Engine Architecture, Jason Gregory

This book doesn't have much in terms of code, but gives a good insight on general game engines.

Also, the second edition is just coming out any month now, so it will be as updated as it gets.


And, if you know how to use it, C++ is definitely a solid choice.

Edited by dejaime

Share this post

Link to post
Share on other sites
Vilem Otte    2938

I will just note, that DirectX has still few advantages over OpenGL in terms of development:

- It has much more features (OpenGL basically equals Direct3D, but you have also DirectCompute, DirectSound, etc. etc. in there), of course you can use other open-sourced portable libraries in place of Direct* ones

- There are "no vendor wars" in DirectX, for example we all had to wait years before AMD (ATi) implemented framebuffers in their OpenGL drivers; it is not as bad as it was,but still, compared to Direct3D it is bad;

- All in all, people won't care whether you used DirectX or OpenGL (+ other libraries), they will care only about the results ... honestly - if you want to learn, I'd suggest trying out both


Of course OpenGL also has some (portability is one of its strengths, extensions can be counted both - an advantage (features are in there when they are released), and disadvantage (vendor wars), and of course there are more)


Just an edit - I will also join the people suggesting Game Engine Architecture by Jason Gregory, it's awesome book.

Edited by Vilem Otte

Share this post

Link to post
Share on other sites
howie_007    285

As I agree with the use of OpenGL portability, if you plan on making a game to sell, all your sales will be on the Windows platform. So use OpenGL because you perfer it over DirectX. Also, XAct make it very easy to add complex sound scripting into your engine.

Share this post

Link to post
Share on other sites
LorenzoGatti    4442

If you are interested in procedural environments, why don't you implement them on top of an existing game engine? You only need fairly low-level control over batching, vertex buffers and geometry shaders; many game engines should be suitable.

Share this post

Link to post
Share on other sites
JarvisP    142
Thanks for all the suggestions. From looking around it seems that going with DirectX would also allow for easier usage of code from the Nvidia developer examples which might be useful.

To answer your question, Lorenzo, I would primarily like to build my own for the learning experience and to have a complete top-to-bottom understanding of the system. However, toying with other engines might also be useful. Do you have any suggestions for engines that allow for such low level control?

Share this post

Link to post
Share on other sites
reloadead    1795

Most people have already given you solid advice, just giving my 2 cents:


1. It doesn't really matter to be honest, you are doing this for yourself as a learning experience. Go with whatever feels best to you. I started with OpenGL and later on dived into DirectX11 because I wanted to extend my knowledge about it. Once you know one, you can use that knowledge to create less of a knowledge gap to the other (mainly due to the fact that you know what it takes to set it up and can search for equivalent functionality).


That being said, I keep hearing that DirectX is slightly easier to get into, but I don't know that myself, I have had no problems with either.


2. When it comes to setting up the engine/framework, there are plenty of resources online that can guide you through the process. Like Lorenzo already mentioned, you don't really need a lot of stuff to get started with producing procedural content. These 2 links (next to already mentioned stuff) should help getting you started with that: Click! and Click!


3. I can also recommend Texturing and Modeling a Procedural Approach for the sake of procedural stuff, it helped me out a bunch when I was toying around with procedural generation


4. Nothing to add to what has already been said.


When it comes to languages, C++ is probably the most used in combination with what you want, but that doesn't mean you can't get away with other languages. Pick what feels most natural :)


Good luck! :)

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this