Learning about game development, any books recommended? [closed] - opengl

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I want to write some games, but I don't have any game development experience. Any books are recommended? Is this necessary to have a good Maths skill when taking about some physical actions? Also, is it complex to do some AI design? thz a lot.

Please have a look at http://www.gamedev.net/, especially "Books" and "For Beginners" section.
Also, not disrespect intended, but your question to me sounded like "I think writing games is kewl but I don't want to do any hard work" - which is not a good attitude to take since writing games is among the hardest programming tasks, especially these days.
And yes, you can't survive without knowing a good deal of math/physics to write action stuff for a good game, and writing a decent AI is a pretty complicated thing.
There may be off-the shelf components (game engines, AI engines) already available as an example, look at "Unreal" engine.

I would HIGHLY avoid OpenGL, DirectX and other lower level APIs unless you are interested in the inner workings of such APIs. If you are just starting out there are a great number of game development libraries tools you should look into ...
Unity 3D
Torque
XNA
Here are some book samplings on all three of these tools...
Unity Game Development Essentials
Bunch of Torque Books on Amazon
Bunch of XNA Books on Amazon
Unfortunately I can't comment specifically on any of these books as I have not read them but I have worked with all the frameworks I mentioned. Pursuing any of them will put you on the road you are interested in, which is learning about game development.
Yes you should have a good grasp on linear algebra, physics, etc. I'm not sure of your education level but high school math should give you a grasp of most of what you need.
There are tons of sites on game development with tutorials, discussions, etc. Gamedev.net is a great place to start looking as has already been mentioned. Start participating in their communites, asking questions, etc. Try out the various libraries I've mentioned and see if you find them difficult, easy, etc. One may suit you more than the others.

I support the DVK suggestion. GameDev is the best place to start. And NeHe (nehe.gamedev.net) has dozens of tutorials ranging from basic to advanced OpenGL.
My advice to you is to focus primarily on OpenGL, and learning how the 3D world works. At this point, you'll probably need a math book, specially for linear algebra and trigonometry. It may take a month, at least, to understand the camera, the coordinates, and to get familiarized with terms and concepts.
A good math background would be helpful to play with physics, however, you can learn as you go. The same is valid for AI, but you'll need more complex algorithms and statistics than math itself.
As for the books, I recommend the following:
Beginning Game Programming (the collection made by GameDev)
3D Math Primer for Graphics and Game Development
The OpenGL redbook is a good reference too.
There are many others I'd suggest, but these will give you a good start.
I'm also not suggesting any book on AI or Physics because it would be, at most, a guess.

Game programming gems (Book series). They could be hard to read, but many chapters are enlightening...
A good game framework could be found on many projects, if you want starts quickly.

Related

Beginner game-development in C++ and lua [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I am a total Beginner in C++ and programming generaly.
I have watched a couple of hours tutorals of C++ and read alot about it (Could you recommend some tutorials?), but what I´ve come across and couldn´t understand was Librarys.
I want to develop games in C++ (I think, it seems most interesting atm).
I can understand that I need a library for game programming in C++, but I don't know much about what a library is specifically, and where to find these librarys.
Also, I´ve read that Lua should be good to script the games with. I would like to know if this is true?
If its true, I would like to know where to find tutorials for Lua?
If not true, what is good then?
Thank you for your time.
This is my first question here.
I apologise if it wasn´t a proper question for this website, or if the english was bad.
I still hope you can give me some kind of answer and/or response.
You may want to try out Löve2d, a framework across Windows, Linux, and MacOS X for writing games in Lua. It bundles various game libraries for sound, graphics, physics etc so that you don't need to deal with that directly, and it lets you focus on the writing of games.
A good library to get started with game programming is SDL. http://lazyfoo.net/SDL_tutorials has some great tutorials to help you get started (the most comprehensive and easy to understand that I've found), but you need to understand program structure and such to get some practical use out of the tutorials.
OpenGL is pretty standard for 3D game programming, but it's more advanced than SDL. I'd recommend making sure you understand at least basic C++ before you move on to game programming... http://cplusplus.com/doc/tutorial would be a good place to start.
Here you can get very good and complete video tutorial of cs Indian institute of technology
I'm sure someone will come along and post an essay answering your questions in more detail, but here are the short answers.
A library is nothing more than a reusable collection of code. People write code and package it up for other people to use in their own projects. Libraries you would need for games include libraries that handle graphics, audio, networking, font/image loaders, etc.
Lua is great to script games with. It integrates very nicely with C/C++. Visit Lua's home site for tutorials.
Check this link out http://cplusplus.com/doc/tutorial/ for libraries here is the STL http://cplusplus.com/reference/.
Here is a reference on Lua, http://lua.gts-stolberg.de/en/index.php?uml=1.
can understand that much that I need a library for game programmig in C++, but I dont know much about, what A library is specificly, and where to find these librarys.
#TheBuzzSaw already answers what a library is, so I'll answer where to find. But wait, before WHERE, you have to know WHAT library to use. There are a lot of game libraries out there, both low level (loosely coupled between components) and high level (tightly coupled). The low level ones have separate functionality for graphics, sound, AI, etc. processing and usually each functionality can be used for things other than games. While the high level ones "glue" them together to form something that's ready to use as a whole (for instance, it provides scene class with events, music, etc. you just have to set some values to use). Due to the many number of then, I can't really say where to find before you know which one to use. One quite complete one is SDL, it's a low level one. Allegro is another one.
Also, I´ve read that Lua should be good to script the games with. I would like to know if this is true? If its true, I would like to know where to find tutorials for Lua? If not true, what is good then?
Lua is good, and it's used a lot in games. Ruby is good, some games use it. Python is good as well. Basically, most scripting languages are good for game scripting. You just have to consider what language features your game required, how fast you want it to be usually contradict with its syntax flexibility, etc.

How to develop small software or application? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
Hya Gurus,
I've been learning c++ for 8 - 10 months and want to develop a software or small applications (i am self taught using some books) so just consider me as C++ entry level programmer.since i don't know win32 etc for GUI development i can use some library.
I know most of c++ features , data structs , algos and have read some c++ book and scott meyer's effective c++.
but problem is that i am unable integrate all my knowledge to build a software and i think i am a adhoc coder. when i see even small simulation or little application codes i understand the code sometimes (sometimes not since understanding them is hard by just seeing code) but i find even code of page 4 - 7 so large that i think i can't develop applications.
for e.g : if i want to develop my own chm reader or FTP or any appz or softw you consider serious coding, how do i develop it? then i find myself completely lost by just start typing code i know won't ever be able to develop it. (i feel 0% confident)
so what i want to know how programmers like you guyz learn to develop serious application when after drilling their teeths in c++ only, do i need some other books to learn how to develop software? or what is the process to become serious application developer ?
Any help is very appreciated.
P.S (Impotant) : i'd love if you could tell me how you became serious developer after learning C++ , what you had done etc pleaseeeeeeeeee. and any personal advices to me .
Edit:
I don't know UML or Soft Engineering , do i need to learn them?
Thanks a lot again ))
Programming large applications is a long and arduous process. Even with medium sized software.
Even the veterans need time to read new code. I remember just recently starting work on an existing software project that had around 150 classes. It took a while just to figure out how the basic input was handled, let alone the whole structure.
What you need to focus on is increase your confidence in building software.
Try creating something trivial, something you know you can program. Try to make it a bit bigger by adding some features, not much though, and keep doing that. Over time you will be a bit more confident in big code.
Programming takes practice and you need to keep at it. It might sound like a daunting undertaking but real confidence in a language takes years of practicing.
Look at the questions here about good software books as well.
I would suggest that you read up on the usenet groups on c and the books by Scott Meyers and Andrei Alexandrescu. Whey don't you try to find out what the Loki lib can do.
Also a good place to start is looking at the boost libs.
Find some small project that you like and see what you can learn, it is an iterative process.
You can also join an open source project.
Good luck,
Lars
you must have perform practicals every day and start with small application then watch project code i hope by performing practical you will easy to understand any code.

Hopping from a C++ to a Perl/Unix job [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
I have been a C++ / Linux Developer till now and I am adept in this stack. Of late I have been getting opportunities that require Perl, Unix (with knowledge of C++,shell scripting) expertise. Organizations are showing interest even though I don't have much scripting experience to boast off. The role is more in a Support, maintenance project involving SQL as well. Off late I am in a fix whether to forgo these offers or not.
I don't know the dynamics of an IT organization and thus on one hand I fear that my C++ experience will be nullified and on the positive side I am getting to work on a new technology stack which will only add to my skill set.
I am sure, most of you at some point of time have encountered such dilemmas and would have taken some decision.
I want you to share your perspectives
on such a scenario where a person is
required to change his/her technology
stack when changing his/her job.
What are the merits and demerits in
going with either of the choices?
Also I know that C++ isn't going
anywhere in the near future. What
about perl? I have no clue as to what
the future holds for perl developer?
Whether there are enough
opportunities for a perl developer?
I am asking this question here because most of my fellow programmers face this career choice dilemma.
EDIT:
Since the last time I asked this question, I made up my mind to switch.
I was just about to sign on the dotted line but some divine intervention made me seek some clarification about the working hours, and to my horror, the profile required me to work in
shifts which I am never comfortable with. I was all the more livid because they didn't clarify this point earlier. It was a reputed organisation but still I gave them my piece of mind and said thank you very much.
Thanks.
Regarding changing of stack, it definitely helps you long term in your career, both from extra experience available to offer to next employer to expanded job set you can qualify for to increased programming IQ due to knowing different points of view (e.g. Perl, for all its scripting origins, when used properly, has both OO and very nice functional paradigms available, but this point applies to any new technology).
However, you must be willing to put extra effort in to actually learn new stack/environment/language, and to learn to do things new way (e.g. don't write C++ code in Perl :) - especially for that last benefit to kick in. Please note "environment" there - the jump involves for example learning new debuggers and debugging techniques (for me the hardest thing about C++ development after switching from Perl so far is probably doing effective gdb debugging after being used to flexibility/power of perl debugger).
Personally I had to make this jump twice - from C developer to Perl and 10 years later Perl to C++. I learned a lot both times, and am not sorry I made the jump. The first jump was from IT role (Junior SA/Production with some C coding) to a full-on developer, the second was just a jump between different business teams.
As for demerits, please be aware that you WILL lose your edge in whichever stack you're not currently using for a while. Not completely forget, but nowhere near where you left off - and that does not even count the fact that the stack may have naturally evolved in the time elapsed. Also, as I said, you MUST expect that to be effective, you have to put in a lot of effort to become fluent in idiomatics, philosophy and ecosystem of the new stack. E.g. simply learning Perl is a small piece of the puzzle - you need to become familiar with a large chunk of CPAN, just as you had to know STL etc... Not really a demerit as far as I'm concerned, but a point that needs to be kept in mind.
As for opportunities for Perl developer, this was extensively covered on SO before. While the absolute # of jobs is likely less than that of Java or C++ ones, a high quality developer will always be in demand, and there's plenty of companies (including, or may be especially, in financial industry) heavily using serious Perl development (as opposed to simple administrative scripting). The language itself is developing and moving forward as well.
This is a highly subjective question. Whether C++ is "going places" depends on where you look and who you ask. For instance, C++ is the development language for video games and graphics processing, and is also used a lot in device drivers in conjunction with C (usually I see a hybrid "C+-", where some features are used from C++ in conjunction with more C-style architecture).
I myself moved from a C/C++ environment into a mostly Perl one, with strong Unix all the while (I actually know next to no windows API programming, .NET, VB-Basic etc).
Basically what I would suggest is sticking with what you enjoy most. This may not be the same as what you currently know or are best at. There are opportunities in a diverse set of technologies. Don't also assume you should tie yourself to one environment -- dabble a little and have some fun. Many facets of programming are constant across languages and environments. Get good at problem solving, writing unit tests, refactoring and planning a project, and you'll do well no matter what set of technologies you're working with.
Why not use your C++ expertise when working with Perl (where appropriate)? It's quite possible to extend Perl with C and C++. I'm not suggesting that you write all your code in C++ just because you know it and than put a thin Perl layer on top, of course.
Being experienced in related technologies is a really big advantage, not a mis-qualification for a technical job. I would suggest you take the opportunity to learn a new technology. Going back from "experienced but rusty" to "on top of it" in your bread-and-butter discipline should be a piece of cake if you have to at a later point in time.

Resources for learning C++ for game programming [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 4 years ago.
Improve this question
I am a relatively newbie in C++ and have worked in the game industry for a few months. I am looking to get back into the industry and understand that one needs to be a very good C++ programmer (mainly because of how competitive it is to get into making games). I was wondering if there are any really good websites online that would help with that. Basically I am looking for something that would help me master C++ concepts and help me be a good coder through practicing programming examples.
Scott Meyers' books: "Effective C++", "More Effective C++", and "Effective STL" are absolutely essential for you.
Add to that "Modern C++ Design" by Andrei Alexandrescu.
Someone once said that it takes 10 years to learn C++. Having 14 years of C++ experience and still regularly learning new things, I'd say it's true. I would hesitate to call myself a C++ expert even after my considerable experience. Don't expect to master it overnight... you will go through many phases where you think you get it, then you'll discover a whole new world (for lack of a better term; I believe Richard Dawkins refers to this process as "conciousness raising"). I've come to accept that another one of these epiphanies is always ahead of me, hence why I'm not calling myself an expert.
That said, you must practice practice practice. I'll 2nd (or 3rd, or 4th, whatever we're at now) Gamedev.net. I spent a lot of time there back in the day...
GameDev.net.
In Resources, there is a "For Beginners" section. Read through all of this!
C++ FAQ Lite is good. You can learn a lot from that website and there is also a related book which is also good.
The books by Scott Meyers contain very good specific advice too.
C++ is a great language and I love it. It builds ridiculously fast code. With good use of profilers, profile driven optimizers, intermodule optimizers, const and restrict keywords, MMX/SSE/vector intrinsics and other stuff it can build ludicrously fast code.
You probably have your eye on job listings from the bigger game companies and there is a lot of C++ demand.
That said, it isn't the only way to develop games. I just want to present some alternatives.
Microsoft's .NET stuff works pretty well. Check out their XNA platform.
You can also write awesome games even in Java. There is a Java version of Quake2 that can get 1,000 FPS in some areas on my Core I7 system at home. Most of the heavy work is in the OpenGL and graphics drivers of course.
Tons of people are writing fun games in Flash, which has language performance much worse than Java or .NET.
I totally recommend Brucke Eckel's: Thinking in C++
You can download for FREE at his webpage.
http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html
That should help you master C++, from there, you can start reading code from engines, like Ogre3D, that would be a better learning.
Later, you should check out books from GameDev.net, they are really cool. But in my opinion, the articles found in GameDev are outdated.
www.gamdev.net is an excellent resource for game programming.
I would also recommend the Game Programming Gems Series.
As far as mastering C++ concepts, who better to learn from than the guy who created C++?
He wrote this: C++ Programming Language
One way to get back in and have fun at the same time is to go through Nehe's OpenGL tutorials, or by using higher-level gaming frameworks such as Irrlicht or Ogre3D
You should check out wildmagic at http://www.geometrictools.com/. This is a nice game engine with lots of sample code and related books. I'd highly recommend it as a deep examination of game engines on c++.
I learned C++ (having no previous coding experience) with the following books:
"C++ Without Fear" by Brian Overland
"Sams Teach Yourself C++ in 24 Hours" Fourth Edition
And
"Beginning Game Programming through C++" Second Edition by Jonathan S. Harbour
The first one is very good and ver detailed, if a bit slow to read. The second I use mostly as a reference, the last one is very useful and quick to read, but it uses the phrase "beyond the scope of this book" fairly often.
The C++ Programming Language
by Bjarne Stroustrup.
I use this to this day. It contains succinct descriptions of all the features of the C++ language. When I search on the web for this information, it's flourished beyond clear understanding. Bjarne did a really good job of clearly defining all the principles of the language, and it's a must-have. I haven't read the whole book, but I've read sub-sections.
(Also gave a vote up for Effective C++, Effective STL, and Exceptional C++ (Sutter))
The above are good suggestions for learning C++ and games...
I will give you a recommendation for software if you just want to make games without a lot of programming background...
You could quickly make simple games and then learn the C++ and other languages it really takes to make serious games...
Software:
Gamemaker
http://www.yoyogames.com/make
The Games Factory 2
http://www.clickteam.com/eng/tgf2.php
Books
Picture Yourself Creating Video Games, 1st Edition
Awesome Game Creation: No Programming Required, 3rd Edition
Make Amazing Games in Minutes, 1st Edition
Good luck to you...
I'd recommend starting with the basics:
The C programming language, by Kernigan and Ritchie.
With this book you'll be closer to C's internals than with others. Then you can go with C++ books.

'Head First' Style Data Structures & Algorithms Book? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I loved the Head First series book on object oriented design. It was a very gentle and funny introduction to the subject. I am currently taking a data structures class and find the text we are using (Kruse/Ryba Data Structures and Program Design in C++) to be very dry and hard to comprehend. This is mostly due I think to my own limitations in the area of Mathematics.
Does anyone know of a Data Structures text that is written in a lighter style, with a sense of humor, that still covers all the basics like Binary Trees, B Trees, and Graphs?
The Algorithm Design Manual by Steve Skiena isn't exactly a barrel of laughs, but it's relatively light on the deeper mathematics and contains lots of what he calls "War Stories", which are illustrative examples from real world situations where algorithm work really paid off (or, sometimes, totally failed). He's also got his audio and video lectures online, and he's got a nice lecture style with bits of humor interspersed, so it might be what you are looking for.
This too is not light either but it is pretty decent
Algorithms and data structures by Robert Lafore
There is nothing more readable and meaningful, in my opinion than http://www.amazon.com/Bundle-Algorithms-Parts-1-5-Fundamentals/dp/020172684X
It's 2 books, part 5 being graphs and is not as useful as the other book - unless of course, you want to use graphs to solve a problem. :)
How to Solve it By Computer by Dromey though not exactly an algorithms book takes the approach of re-discovering the process by which many data-structures and algorithms were arrived at over the years. This allows us to understand the flow of thought behind the code and some of the forces at work.
Related: This book follows in the foot-steps of another great book: How to Solve It by G. Polya which talks about how great mathematicians go about the problem-solving process.
I'm currently using Larry Nyhoff's ADTs, Data Structures, and Problem Solving with C++.
It's not as light or enjoyable to read as a Head First series book, but it's really well detailed on binary trees, b trees, and graphs. Its code samples have been really helpful for completing my assignments. No higher math knowledge is required to understand the text (except, of course, on the chapter dedicated to algorithm analysis).
Beginning Algorithms by Harris and Ross (a Wrox Press book) was one I liked, although its examples are presented in Java, not C++. Might be a nice accompaniment to the text you're trudging through in class.
I've heard good things about "Introduction to algorithms, A creative approach - Udi Manber"
I can't verify it though since it's not available locally :(
http://www.amazon.com/Introduction-Algorithms-Creative-Udi-Manber/dp/0201120372