Hello Zed,
Sadly you're only going to get very generalized answers because it's hard to gage what a person is able to do without a reference point.
I usually post this for new C++ programmers before they start making games.
-
Compiling, building
-
Basic program structure (main(), header includes ...)
-
Basic data types
-
Composite data types
-
Control structures (if, for, while ...)
-
Basic functions, function signatures
-
Function parameter passing
-
Classes and general OOP
-
STL - Standard Template Library
-
Dynamic memory allocation, pointers
-
Type casting
-
Advanced OOP, inheritance, polymorphism
-
Advanced program structure, header files, linking
-
Debugging techniques This is important to be able to help yourself when the situation arises.
-
Templates
-
Operator overloading
-
Namespaces
-
Move semantics and other C++11 features
-
Metaprogramming
It's not always applicable depending on the language you use, so things like dynamic memory might not apply. In the 15+ years I've programmed, the top two abilities for me have been the ability to problem solve, and creativity use the tools and knowledge to build desired results. The more you know about the languages and libraries, engines, frameworks and APIs that you use, the easier it becomes to code your ideas assuming you're able to problem solve and put the pieces together.
These skills will later on become very cross referenceable. I program in just over 7 languages and use many of the same concepts when working, I just need to change my approach sometimes to fit the syntax, and way a language/API may handle a certain operation.
Storing data can be done through custom files, text files, excel files, local databases, ect... There are a lot of ways to do it. I was referring to using an online database in your prior post. I would never recommend requiring a game to connect to an online database for the heck of it unless you have a reason not to store data locally.
With 3D objects, you can keep the size and everything, you just load different textures that hold the alternative texts, and designs. 2D objects are the same, you can load all your different textures into a manager class, and use them on sprites as needed. It also depends on your approach, you could simply store book designs in texture files, and use built in fonts to display on top of the book covers themselves. When it comes to textures, I always program a manager class that loads every graphic I'm going to use, and assign it to sprites as needed so I'm not loading the same graphic over and over again using up memory.