Raphael Mitrious
Raphael Mitrious

Reputation: 113

Graphics API for Game Development

Well, I've researched a lot and have come to a basic conclusion on APIs: as it seems the API choice for learning doesn't matter that much, as long as you can really learn 3D programming, or so it seems.

My background/current fields of study: I have a sort of solid background on programming, algorithms and object oriented designs.

I have made a few 2D games: using XNA(C#) and allegro 5(C++), I even wrote a sort of small framework for a few 2D games I had to make for a course (using allegro) to speed up my game making process, so I am quite familiar with the basic concepts of game logic and game loop structure.

I have made a very few experiments with 3D using XNA, just got the basic idea actually.

I have a basic, but solid, knowledge on Linear Algebra and Calculus.

I am currently studying Artificial Intelligence, Machine Learning (to be more specific, in case anyone wants to know: rules extraction for relational databases using Markov Logic for a reading system), doing some research in this field right now.

Well, I love games and have a lot of fun with game programming especially AI and game logic.

I want to move to 3D game development now, and even though I don't really want to work too much on the graphics programming and stuff, I want to have the knowledge (well, I'd like to know what's going on and how to take advantage of that: if I want to write some good AI for 3D environments I need to have a good idea of how to deal with it).

I just started (today) reading the examples and documentation of Direct3D (9 and 11) from what I've read if I'm going to learn DirectX I should go for 11 if low-hardware compatibility and XP users aren't my goals.

I'd like your opinion on whether I should use DirectX or something like SDL/OpenGL/OpenAL I have nothing against none I just want to know which would be better for someone who wants to focus on some new AI for games and game logic. I will be using C++/Python for the games, some C#/XML for some tools and such. Well I'm basically going to be developing stuff in/for a windows environment (nothing against linux or something - I use linux for some of my AI research for some of the software I use).

Well I hope I made my question clear, and thanks in advance to anyone willing to help.

Upvotes: 0

Views: 4067

Answers (2)

Marcel Marré
Marcel Marré

Reputation: 66

Something you may want to keep in mind: as far as I know, OpenGL (which, after all, stands for Open Graphics Library if I'm not barking up the entirely wrong tree) is just for graphics. DirectX, on the other hand, also offers stuff for sound, music, input via various controllers etc., so if cross-platform is not your main issue, and you want to concentrate on logic and AI, DirectX may help you to get something working off the ground fairly quickly, whereas with OpenGL (which I don't mean to knock in general) you might then need to look for sound and input APIs.

Upvotes: 1

npinti
npinti

Reputation: 52185

As stated here and by @leppie, OpenGL is cross platform, so you will have to learn to use one framework which will work on most platforms today.

Although I have never really worked with OpenGL, from what experience I have with open source projects is that good documentation is hard to come by, although you will most likely find a ton of examples online. So you might have some hard time finding good documentation (again, basing my self on previous open source projects I have used).

On the other hand, DirectX is something which runs in a Windows environment. It also seems to be the tool of choice for many game developers which seems to be what you are after. Using DirectX will also allow you to exploit Visual Studio (which in my opinion is a very, if not the most, powerful IDE I have ever used) as shown here.

All in all though, what you are asking has been a debate which has been going for years (here and here just to name a few).

EDIT:

Like most things in the programming world, a certain platform will give you an edge if you try to do a list of given things. Different lists require different platforms/frameworks, etc. I have never really messed around with these technologies, but, I think that Microsoft sometimes tends to make the life of developers using their products slightly easier than those using open source products.

What you could do is to try and go through some code, or try to come up with your own, to do the same thing using the two frameworks and then, choose the easier one.

Upvotes: 3

Related Questions