   C++ and beyond
  Hello all!For some time I've been revising and learning new things from C++ various books (C++: Software Engineering, STL Library, Effective C++ to name a few). Now is the moment that I think I should start writing my own games (and read respective books).I plan on becoming a game developer, so I would rather focus on something that will be needed in my job (i.e. 3D rather than 2D and so on). Basically: something difficult, but giving me enough power to write games of decent quality, not some small handicapped-engine-based game (not that those games can't be good - I hope you know what I mean). My main regions of interest is game programming, with emphasis on artificial intelligence implementing.My question is as follows: what should I learn/read now? Should I write some easy games in SDL. Try to do something in Allegro/OGRE/whatever? Learn DirectX 9.0? Learn C# and master XNA?Oh, by the way - I assume I will be mainly developing games for Windows OS. I do not plan (but who knows?) to work on consoles (XBOX, PS, Wii) or portable devices (PSP, NDS or java games for cellphones).   
  I would recommend you to get familiar with basic of 2D games using popular libraries like SDL, allgero, or DirectDraw (or it was renamed already?), just to understand what is a game, how the game loop looks (in fact those things are almost identically for both types of games 2D or 3D). After writing few games, you can switch to 3D games.Good luck :)   ;  Reading books is all well and good, but if you haven't been writing programs to go along with what you've been reading, you've been cheating yourself of a lot of practice and knowledge. You should remedy that.Quote:not some small handicapped-engine-based game (not that those games can't be good - I hope you know what I mean)I know what you think you mean, and you're...not correct. Even engines/libraries/frameworks that you might consider 'handicapping' (because they are abstractions) are useful and can impart upon you significant knowledge when you use them. Besides, you will almost be guaranteed to be using exactly such an abstraction in any professional work you'd do in the industry.What is the most complicated program you've written to date? That will determine what you should do next. If you've never written a 2D game before, I would strongly recommend against working on a 3D one -- your comment implying that 2D development knowledge will not be "needed" is, quite frankly, woefully incorrect.   ;  My personal suggestion to you would be C# and XNA.  The main reason being is that C# and XNA will allow you to focus on the most important matters of making games.As in how to integrate together the different components of the game so you actually have a game and of course pure fun gameplay.  C# and XNA are great for teaching these things.  Once you understand those things you can go back and use C++ and whatever library you choose.   ;  Well what direction are you most interested in right now? If you are interested in 3D graphics and want to learn how to code a rendering engine, try DirectX or OpenGL. If you are more interested in AI design, choice a rendering engine (for example OGRE or irrlicht), make a quick game and concentrate on AI. If you are more interested in multiplayer, you could make a small 2D game with SDL or OpenGL and then start working on network multiplayer client/server synchronizing.There are many directions you can go, once you know the basics of programming you should be able to go any direction. The different approaches have different results however, if you start on DirectX/OpenGL, it will take longer before you actually have something visual then when you use a rendering engine and build a game around that. So depends on how long you are willing to wait for some nice looking results, and which direction you are most interested in right now.   ;  -- "What is the most complicated program you've written to date?"A program? I usually end up writing small programs to suit my needs, but recently I've been quite proud of my program used to calculate possible 'arrangements' (not important at the moment) of a matrix. This program composed of: boost libs usage, several aggregated classes, dynamically managed matrices and stl lists. It's neat (nicely structured, commented, logically divided), efficient (runs quite fast) and it works! It's not a very complicated program, but I think I understand the basics of C++ and how to write working & nice programs in it.And I've already written two small games: sokoban (with leet Doom sprites!) & saper (although only with keyboard control).-- "Well what direction are you most interested in right now?"As I said, I am mostly interested in programming, and especially in AI. Of course, I would like to also learn something about graphics, networking etc., but I know that it's virtually impossible to be proficient in all those areas.-- "Even engines/libraries/frameworks that you might consider 'handicapping' (because they are abstractions) are useful and can impart upon you significant knowledge when you use them."I've never said that they can't teach me anything. Problem is, that I don't want to get used to a handicapped engine, that will become only a millstone around my neck. That is what I meant: to learn something 'promising'.   ;Quote:I've never said that they can't teach me anything. Problem is, that I don't want to get used to a handicapped engine, that will become only a millstone around my neck. That is what I meant: to learn something 'promising'.But you said they handicap you -- and they don't. That's wrong. They are just as 'promising' as anything else.It sounds like what you need to be doing at this point is making some simple 2D games. I would start looking into SDL or SFML if you want to continue using C++.   ;Quote:Original post by red1939Problem is, that I don't want to get used to a handicapped engine, that will become only a millstone around my neck. That is what I meant: to learn something 'promising'.In that case, quit using C++. Using anything other than assembly is totally handicapping you. Oh, and running an OS you didn't write is, too.   ;  Using this logic, I should dump assembler and http://www.goldb.org/goldblog/cmg_images/real_programmers_binary.jpg.Said that, I really don't understand what you are trying to prove to me. That every game engine is good? So why most known games have engines written in DirectX, not in some Allegro/SDL/OGRE?   ;Quote:Original post by SneftelQuote:Original post by red1939Problem is, that I don't want to get used to a handicapped engine, that will become only a millstone around my neck. That is what I meant: to learn something 'promising'.In that case, quit using C++. Using anything other than assembly is totally handicapping you. Oh, and running an OS you didn't write is, too.LoseThos, an operating system for Real Programmers who miss the time of unprotected core memory . ... Oh I missed the assembly part, LoseThose requires C knowledege.   