   Not sure on how to get started with game development.
  Hello world!  A little bit about me, I've been programming as a very casual hobbyist in C++ for about 7-8 years now.  My skill is pretty low though, in fact I'd rank myself as a beginner for all intents and purposes.  I've been making games in various environments for around the same amount of time.  (Things such as RPGToolKit, GameMaker, Warcraft custom-maps, text-games, etc.)  Nothing that really was my "own" I guess you could say.Anyways, so now I've been really interested in doing something in C++, to hopefully increase my skill as a programmer and to also learn game design from start to finish.  This may not be the best decision for learning to develop games, but I've decided to go with DirectX after reading pretty much every tutorial here: (premium ones included ;D) https://www.directxtutorial.com/index.aspx  I certainly didn't understand the 3D ones very well, but I feel like I can at least start work on a 2D game now.So, basically, what I have right now is a project with what I'm assuming is a bare-bones game engine and a hopefully decent direct x wrapper.  To be exact, my render file looks like this:void LoadGraphics(){// Load graphics into memory}void Render(OBJECT *obj){// Begin renderingStartRender();// draw the scene// Stop renderingEndRender();}(Basically it's just what the tutorials ended up showing)Now, the thing that gets me is that in the tutorial it's basically telling me that I'm going to write out long lists with comments to load ALL the resources of my game.  I'm only writing a tetris-clone to begin with, but, it just seems like this is bad, horrible design and will be a nightmare to try to write, let alone maintain or take to a more complex game.  (I'm intending to write a break-out game next, as the article about game dev tells me to ^^  Hopefully, I'll follow that order of games pretty closely.)Anyways, so here is my problem:How should I break loading graphics up?  I'm currently thinking about something like this:void LoadGraphics(){// Load graphics into memoryLoadSprites();// loads all the sprites needed for the current boardLoadObjects();// loads all the non-sprite object gfx for current boardLoadTerrain();// loads all the terrain texture}void Render(OBJECT *obj){// Begin renderingStartRender();// draw the sceneDrawTerrain();// draws the terrainDrawObjects();// draws all the bushes, non-sprite objects etcDrawSprites();// draws the sprites// Stop renderingEndRender();}But I'm not sure if this is a good design either, so basically, long-winded post to ask what I'm assuming is a question I should know the answer to, but I've been looking for about a week now and I just can't seem to find any real reading on the subject (maybe the books would be good reading, but I'm a college student and it's summer break and I don't really have the money to spend on a book right now :( )   
  If I understand correctly, you're surprised that in directx, you're required to actually load every single resource one by one between the startRender and endRender calls. To be honest, I was kind of surprised by this at first as well, but in fact it does make sense if you realize that you would never list your resources as such. You would almost always build some dynamic system that loads your resources into various arrays in memory, and renders them when the time is right. SO the actual code that is between those api calls is not that long at all.Whether the code you show is going the correct direction, really depends on how you structure whatever is in your scene. A pure 3D environment would maybe have a function in LoadGraphics that loads all 3D objects from files (.obj maybe?), loops through all the triangles, converts them into directx triangles and attaches the right uv-sets etcetera. However, if you would also include a dynamically generated terrain, you would probably load this differently, maybe using a height map or something, and so you would do this with a LoadTerrain functionEven if you don't want to store your objects and sprites in a separate file, you will need to define them somewhere (maybe you want to define a Piece-class, with other classes that inherit this one and are called Bar or Block. Then, per class you would define their vertices and triangles, and your renderer would loop through every instance and include them in the scene).To wrap it up, how you would structure your code depends on how you store the data. The key is to separate the data and the code that loads them. This way, your scene can be incredibly complicated without cluttering your code. The only thing you should NOT do is list all vertices of all objects below each other because that indeed creates the mess you are afraid of.I hope this helps,edit: a final note, I agree that directx could be a little more... object oriented here. it would be better if you could define objects, add triangles to them, assign materials, etc. However, keep in mind that DirectX is also a C library, which is not OO   ;  Ah okay thanks, I think I get it now. :DI didn't realize I actually would load everything in one place, it kinda makes sense now though - especially when I realize how small the amount of memory that actually will be.  Thanks again ^^   