Don't worry, you're question isn't stupid, it is infact a question that people with years of knowledge will still ask, and some people will give you different answers than others, but, here are some points that all people will give you:
- It depends entirelly on the type of game. For example, you dont need a matrix if you are making an FPS that is set inside buildings
- Flexibility means you can do more. If you load your level in as one big model from 3DWS, then when you want to add an extra tree or get rid of that annoying bench, you are screwed.
This is my personal way of doing it. I make my own file format, which basically says: Create an object (and specify the object type / model location), Get a texture image, Position, Scale and Rotate, then, worry about extra stuff like shaders.
Here is a simple file format I made that I can use for levels:
object
cube
450,50,-100
0,0,0
-399.999969482,99.9999923706,-399.999969482
void,ultrazone.jpg
object
cube
400,0,-100
0,0,0
-399.999969482,99.9999923706,-399.999969482
void,ultrazone.jpg
object
cube
500,100,-100
0,0,0
-399.999969482,99.9999923706,-399.999969482
void,ultrazone.jpg
object
cube
550,150,-100
0,0,0
-399.999969482,99.9999923706,-399.999969482
void,ultrazone.jpg
object
cube
1100,200,-100
0,0,0
-1399.99987793,99.9999923706,-399.999969482
void,ultrazone.jpg
object
cube
-180,0,-100
0,0,0
-999.999938965,79.9999923706,-999.999938965
void,ultrazone.jpg
object
cube
40,300,-640
0,0,0
-1399.99987793,519.999938965,-199.999984741
void,ultrazone.jpg
object
cube
4500,200,-100
0,0,0
-1399.99987793,99.9999923706,-399.999969482
void,ultrazone.jpg
Might look confusing, but it's not. The first line, "object", says that this part will be used to make an object. The next line, "cube", says to make a cube. If it said "file", it would mean it loads a model made in a program. The directory of the model is speficied later. The next 3 lines each have 3 pieces of data. The first 3 and Position X, Y and Z. The next is Rotation X, Y and Z, and the next one is scaling. Then, the next line tells the loader the directory of the object, and the texture.
Since the object is not a model, you dont need a directory, so it is "void".
It then does the same thing till the file ends.
If you can make something that can parse that (to be honest, shouldn't take more than a week of learning if you try), you will have no problems with level loading. Another advantage is that with a file format you can make your own level editor that will export to your format, so it will be compatible with any of your games, but, that's a little harder
"It's like floating a boat on a liquid that I don't know, but I'm quite happy to drink it if I'm thirsty enough" - Me being a good programmer but sucking at computers