So, I'm wondering if this text is the best to begin with; and will it help me create these games and then some? Thank you all for your feedback.
What book to start from
So, I'm wondering if this text is the best to begin with; and will it help me create these games and then some? Thank you all for your feedback.
Once you do some simple things, you can get deeper in SDL, or directly OpenGL and create your own Input Manager, or your own Renderer or your own shaders.
I tell you that because, if you're not comfortable with C++, you must get used to it first, and you can do it at the same time you learn what's a sprite, how simple 2D math works, etc. But it will be harder if you're implementing something in such a low level.
There are plenty tutorials, documentation and forums about Cocos2d-x. I would begin with their official Programmer's Guide, and use their official forums too, which have a decently active community. It's also open-source so you could take a look at their code later, I think.
Good luck.
The 'current' problem with C++ is that it is moving so fast, that books cannot keep up. You want at least C++11 (5 years ago), which barely exists in book form. Anything before C++11 is obsolete. C++ itself is however already at C++14, and C++17 is on its way.
This makes buying a book a hazardous venture, as it's old before you have read it, so to say. You may want to rely more on online resources, eg
http://www.cplusplus.com/doc/tutorial/
and the reference site https://en.cppreference.com/w/ instead.
Books about SDL are mostly a waste of money, SDL is a C library, and it's pretty simple. A tutorial like http://lazyfoo.net/tutorials/SDL/index.php will work nicely.
The book you should start with is your netbook. By that, I mean start writing code. It doesn't have to be good code, it doesn't have to work perfectly, but it's gotta be code and you have to write it.
Passive learning from a paper book is not nearly as effective as JFDI and see what happens. Bits are cheap, use as many as you want.
I agree with Bregma.
The internet is an awesome resource for tutorials, but if you're just copying code, you're not necessarily learning; you can, though, learn a lot about the general architecture of a game (gameloops, for example) as those can be a little less intuitive (or maybe I'm just slow).
Further, I'd recommend against using an engine for basic games like those you mentioned, as they can strip away a lot of valuable learning opportunities to a new game-programmer (and nothing you'll be making for a long time will actually need or seriously benefit from an engine like UE4).
The 'current' problem with C++ is that it is moving so fast, that books cannot keep up. You want at least C++11 (5 years ago), which barely exists in book form. Anything before C++11 is obsolete. C++ itself is however already at C++14, and C++17 is on its way.
This makes buying a book a hazardous venture, as it's old before you have read it, so to say. You may want to rely more on online resources, eg
http://www.cplusplus.com/doc/tutorial/
and the reference site https://en.cppreference.com/w/ instead.
Books about SDL are mostly a waste of money, SDL is a C library, and it's pretty simple. A tutorial like http://lazyfoo.net/tutorials/SDL/index.php will work nicely.
Thank you so much for sharing those links. I looked at the totorial site, and needles to say, I got excited. Again, thank you.
The book you should start with is your netbook. By that, I mean start writing code. It doesn't have to be good code, it doesn't have to work perfectly, but it's gotta be code and you have to write it.
Passive learning from a paper book is not nearly as effective as JFDI and see what happens. Bits are cheap, use as many as you want.
My thoughts exactly! Before classes were over, I was looking at some books. And most of them pretty much did that. Just had code for you to copy. Nothing like my textbooks, which forced you to learn the concept and then write your code.
Hello. While I'm on summer break, I'd like to work on my game development skills. I want to create simple games using C++ language. I read an article on here that someone suggested. In it, the author suggested creating games like pong, snake, space invaders, etc. I'd love me to create these games, and hopefully more, this summer. B ut I don' t know of or have found a text that will guide me to properly do so. I was about to purchase the SDL C++ programming book (I recently learned the language throughout this school year).
So, I'm wondering if this text is the best to begin with; and will it help me create these games and then some? Thank you all for your feedback.
From programming perspective,
First step is learning C++ properly, all advanced topics you don't know- Learn. Some of them: OOP, Multithreading, Networking, Graphics,etc..
Knowledge of the language is by far the most important skill- It's not mandatory to learn everything, if you feel you don't need it right now, don't learn it.
Secondly, choose your API/Tool, there are engines and libraries to work above the basic openGL api or directX api. Read about anything you can find and choose your favorite.
Lastely, Learn the API you chose.
From game development perspective,
You also need to learn how to edit sound, find and edit graphic images.
How you learn those is less important, it is your choice. If you feel you learn better using a book, find a book, if you find tutorials easier, take the tutorials.
Some topics I learned from books, some I learned from articles, The net has many sources for everything.
I agree with Bregma.
The internet is an awesome resource for tutorials, but if you're just copying code, you're not necessarily learning; you can, though, learn a lot about the general architecture of a game (gameloops, for example) as those can be a little less intuitive (or maybe I'm just slow).
Further, I'd recommend against using an engine for basic games like those you mentioned, as they can strip away a lot of valuable learning opportunities to a new game-programmer (and nothing you'll be making for a long time will actually need or seriously benefit from an engine like UE4).
So, you are pushing someone who is not even comfortable with C++ and knows nothing about games programming to develop their own rendering system (it doesn't matter how simple it is) or input management? I totally disagree with you in that point.
I think it's far easier to learn very high level stuff first, then go deeper and deeper to the lowest level.
Programming Principles and Practices Using C++ by Bjarne Stroustrup covers C++ 11 and C++ 14. The C++ Programming Language 4th Edition by Bjarne Stroustrup covers C++11 and makes a decent reference book. Beyond those books you could get SDL Game Development and SFML Game Development for learning to make games. Above all else, write code and learn as you go.
I agree with Bregma.
The internet is an awesome resource for tutorials, but if you're just copying code, you're not necessarily learning; you can, though, learn a lot about the general architecture of a game (gameloops, for example) as those can be a little less intuitive (or maybe I'm just slow).
Further, I'd recommend against using an engine for basic games like those you mentioned, as they can strip away a lot of valuable learning opportunities to a new game-programmer (and nothing you'll be making for a long time will actually need or seriously benefit from an engine like UE4).
So, you are pushing someone who is not even comfortable with C++ and knows nothing about games programming to develop their own rendering system (it doesn't matter how simple it is) or input management? I totally disagree with you in that point.
I think it's far easier to learn very high level stuff first, then go deeper and deeper to the lowest level.
Hmm.. at this rate its so easy to start a holy war on which is the best way to learn... and this holy war is not my aim, but just to state my opinion with reasons for the sake of not confusing the OP or anyone else seeking similar advice
I think NoAdmiral and Bregma are right because
1. I read and re-read the OP's post and I cannot see any indication where he stated he is not comfortable with C++. Instead his post indicates that he is not well vast in the language but wants to learn and willing to make the efforts
I'd like to work on my game development skills. I want to create simple games using C++ language.
2. The quote above also indicates he wants to be able to create games, which is ambitious enough in my view
3. The post you quoted or Bregma's did not suggest that OP should write a complicated rendering system but that he should learn and write code actively as against passive learning, or copying code, which is ineffective.
4. Learning without an engine doesn't mean you have to write a complex rendering system. It means for instance OP can learn about vectors maths, simple collision detection, simple game architecture and progress gradually. And also he should try to code these as much as he can and see how it affects games so that when he begins to use engines later he will have a proper knowledge of how things work at the lower level and that would make him a better game developer
I agree with Bregma.
The internet is an awesome resource for tutorials, but if you're just copying code, you're not necessarily learning; you can, though, learn a lot about the general architecture of a game (gameloops, for example) as those can be a little less intuitive (or maybe I'm just slow).
Further, I'd recommend against using an engine for basic games like those you mentioned, as they can strip away a lot of valuable learning opportunities to a new game-programmer (and nothing you'll be making for a long time will actually need or seriously benefit from an engine like UE4).
So, you are pushing someone who is not even comfortable with C++ and knows nothing about games programming to develop their own rendering system (it doesn't matter how simple it is) or input management? I totally disagree with you in that point.
I think it's far easier to learn very high level stuff first, then go deeper and deeper to the lowest level.
Hmm.. at this rate its so easy to start a holy war on which is the best way to learn... and this holy war is not my aim, but just to state my opinion with reasons for the sake of not confusing the OP or anyone else seeking similar advice
I think NoAdmiral and Bregma are right because
1. I read and re-read the OP's post and I cannot see any indication where he stated he is not comfortable with C++. Instead his post indicates that he is not well vast in the language but wants to learn and willing to make the efforts
I'd like to work on my game development skills. I want to create simple games using C++ language.
2. The quote above also indicates he wants to be able to create games, which is ambitious enough in my view
3. The post you quoted or Bregma's did not suggest that OP should write a complicated rendering system but that he should learn and write code actively as against passive learning, or copying code, which is ineffective.
4. Learning without an engine doesn't mean you have to write a complex rendering system. It means for instance OP can learn about vectors maths, simple collision detection, simple game architecture and progress gradually. And also he should try to code these as much as he can and see how it affects games so that when he begins to use engines later he will have a proper knowledge of how things work at the lower level and that would make him a better game developer
Thank you for the interpretation. You were on target with everything, except my sex ;) . After reading and working in a book that illustrated the C++ language using UE4; I noticed that the engine did a lot of the heavy lifting- which wasn't what I wanted. After doing some research, I learned that learning game development through the use of an engine is still a good practice, but it's not the ideal practice. And since I want to apply the knowledge I've learned about the language and learn things that weren't taught in the classroom; I believe not using an engine (at first) would be best. Again, you were absolutely correct.
Thank you everyone, for sharing your advice. I deeply appreciate it.
After you become comfortable with C++, read Game Coding Complete, 4th Edition.
Take a look at the preview and you will be excited to read it afterwards. :)
Hmm.. at this rate its so easy to start a holy war on which is the best way to learn... and this holy war is not my aim, but just to state my opinion with reasons for the sake of not confusing the OP or anyone else seeking similar advice
I agree with Bregma.
The internet is an awesome resource for tutorials, but if you're just copying code, you're not necessarily learning; you can, though, learn a lot about the general architecture of a game (gameloops, for example) as those can be a little less intuitive (or maybe I'm just slow).
Further, I'd recommend against using an engine for basic games like those you mentioned, as they can strip away a lot of valuable learning opportunities to a new game-programmer (and nothing you'll be making for a long time will actually need or seriously benefit from an engine like UE4).
So, you are pushing someone who is not even comfortable with C++ and knows nothing about games programming to develop their own rendering system (it doesn't matter how simple it is) or input management? I totally disagree with you in that point.
I think it's far easier to learn very high level stuff first, then go deeper and deeper to the lowest level.
I think NoAdmiral and Bregma are right because
1. I read and re-read the OP's post and I cannot see any indication where he stated he is not comfortable with C++. Instead his post indicates that he is not well vast in the language but wants to learn and willing to make the effortsI'd like to work on my game development skills. I want to create simple games using C++ language.
2. The quote above also indicates he wants to be able to create games, which is ambitious enough in my view
3. The post you quoted or Bregma's did not suggest that OP should write a complicated rendering system but that he should learn and write code actively as against passive learning, or copying code, which is ineffective.
4. Learning without an engine doesn't mean you have to write a complex rendering system. It means for instance OP can learn about vectors maths, simple collision detection, simple game architecture and progress gradually. And also he should try to code these as much as he can and see how it affects games so that when he begins to use engines later he will have a proper knowledge of how things work at the lower level and that would make him a better game developer
It's not a war, it's just that I think you're pushing him into the wrong direction.
First of all, he wrote in the original post:
"I was about to purchase the SDL C++ programming book (I recently learned the language throughout this school year)."
From here, what I understand is that he has done some C++, but he hasn't even faced a non-educational problem, so he can't be comfortable with the language.
Secondly, if he doesn't use some kind of framework to abstract some things, he will have to learn and implement really low-level things which will probably be too overwhelming and he will probably lose his motivation.
That's why I recommend him starting without having to worry about graphics implementation, as an example. Just to learn what the main loop is, how to manage and implement collisions, Entity-Component Systems...
As a conclusion, it's far easier to learn how things work before trying to make them from scratch, that simple.
Anyway, follow the path you prefer.
Best regards.
Note: I never said I did not agree with that about active learning
I found this website a while ago, http://www.learncpp.com. I have not checked it myself but it looks like it good resource to learn with.
It should not take to long for you to be able to play around with SDL and get something graphical showing. The SDL Tutorials at this website might be a good start. http://gamedevgeek.com/tutorials.
Don't worry to much about using the latest C++ magic, my code looks like it is written in 1992 ;). Do what you enjoy so that you stay motivated to keep learning. Have fun :).
The SDL Tutorials at this website might be a good start. http://gamedevgeek.com/tutorials.
That explains SDL1, not really worth learning, as SDL2 is the current version, which does things a little different, in particular in the video area.
[More stuff seems old, Lua tutorial uses 5.0, while we're at 5.3 currently, approach this site with caution :) ]
If you feel comfortable with C++ I do recommend this book: do highly recommend SFML. Though I do recommend a good knowledge of C++ and even some C++11 (this book gets a +1 from me just because it does use some of the C++11 features)
The reason I really like that book is because I feel it gives you a good idea of how a Game is actually put together and how all the pieces work and function together. It doesn't just go and have you copy and paste code all of your code in main.cpp, and have it work but scare you away from ever programming a game again. In a few places it does "over engineer" some code for how simple of a game you end up making, but it really gave me a lot of knowledge and helped me out a lot in seeing all the pieces of a game can fit together and left me with enough resources to go out and experiment and learn even more complicated things on my own.
Though in the end, the most important resource to learn it all: is you sitting down at your computer and doing it yourself. Just start doing something and don't quit. Just give yourself some really small goals of "get a ball on the screen." Then maybe "I wonder if I can move this ball?" That leads to "lets to try to get this ball bounce around" and next thing you know you have made yourself a Pong Game by just setting some really small goals
Topic Locked
This topic has been locked by a moderator. New replies are not allowed.