   Beginning Game Programming
Hello guys..I am a complete beginner to graphics and game programming.I want to code my own game.I know there are game engines out there that can help me.But I want to use my programming knowledge and coding skills to the maximum.I want to make the game with MY own codes as much as possible.I am a first year CS engineering student.By coding most of my game,I want to improve my skills and knowledge.I am willing to take very hard work .But I don't know anything about this.What all tools are needed?is OpenGL+ C++ enough?
With c++ and opengl you can do almost everything.First you have to choose what you want to do, and my personal suggestion is to choose something small to start with, and sticking to it to finish. 2d or 3d? (2d suggested...)puzzle, platform, rpg, fps... (arcade puzzle suggested, something like tetris or arkanoid) Even if you want to do all by yourself, which is a good thing from my point of view, I suggest you to choose a lib like sdl2 or sfml2 ;So we can write a game without a library too?;You can do an entire game with only opengl (speaking of the graphical part - no audio or networking). In this case is up to you the OS management (open the window, grab player input, handle system messages) and the assets management (read texture data from file, create a sprite in memory) and probably a lot of other things I can't think of now. It's a bigger effort but no way impossible, but I don't want to suggest you this way unless you are more interested in learn/understand the process by an ingeneering point of view. If you want to make a game pick a lib as the bare minumum. Even so it's not that easy ;);Note that OpenGL is a library. Can you write a game without using any library? For all intents purposes, no. You have to decide at what level you are OK with using a library. The level of OpenGL/DX is mostly accepted as the "floor" level these days. However, note that you can and will most likely be looking at many years of effort here. Just want to make sure you are prepared for the effort you will be taking on. Want to make sure your expectations are in line with this so you don't get frustrated.;So we can write a game without a library too?It is not advisable to write a game without some sort of built-in library or open source game library. Would you want to write your own graphics canvas and bufferstrategy? Would you want to figure out how to create a function or method that computes the width and height of an image or even read the image? Short answer: no these basic things are already written by people many years ago and creating your own is just re-inventing the wheel and progress on your game will be small. There are a lot more interesting and better algorithms to come up with on your own than the generalized ones that already exist in built-in library. Even open source library you can easily import them to some degree. ;What all tools are needed?is OpenGL+ C++ enough? I am currently developing a game (and game engine in tandem) in C++. I too like the feeling of having my own code doing a lot of the heavy lifting. I have chosen to do the rendering and physics code myself and to unload the other tasks to libraries. The following is my current setup. Perhaps this can give you a rough idea of what libraries you may need to use as well. C++OpenGLOpenAL (for audio)   - Ogg/Vorbis (for loading .ogg files)GLEW (for grabbing OpenGL extensions/version info)GLFW (window management and user input)stb_image (image loading)RapidXML (XML parsing);So Game Programming is the same as our usual programming to a large extent right?Difference is the Libraries..isnt it?;So Game Programming is the same as our usual programming to a large extent right?Difference is the Libraries..isnt it?Code wise it is all the same. The difference is the problems you will solve in game programming is slightly more involved than the text based projects you might have done in school and also the fact that you need to know and be able to apply basic understanding of how coordinates work on a graphics window or how to draw an image on a screen. You need to keep track or manage many states or behaviors of particular game mechanics and ensure nothing breaks or buggy happens. This is one of those things you need to bear in mind about and be one step ahead of the end user and predict what actions the player might potentially perform or think about when playing your game.  The other part is just learning really basic things you need to know about graphics in general after having a solid foundation of general programming knowledge in order to make a basic simple game. If you can make a simple game, the ones you want to make eventually will become much easier because you already have experiences with these types of problems from your simple game.  The challenges you face in your first simple game is always the toughest one. From my experience, that was how it was. Beginners are still learning and adjusting to this style of programming. It does not matter how much you know, it is more about how you can apply what you know.