Hello! I'm very new at c++, and don't know anything past making random numbers yet. I am in highschool, where I currently am taking C++, and I am also making games with a friend of mine(he is the artist/programmer, and already knows c++ while I design the game.). We've made a few games together already, but I really feel bad for having him program everything, while I get to design. Now, I may be feeling this because I feel that designing games is extraordinarily fun, but I would like to help him with the coding, since I have no artistic ability whatsoever.
I am thinking about surprising him by making a 3D engine(because all of our games have been 2D so far), but like I specified earlier, I am very new to C++. I would like for someone to give me a checklist of what I need to know, what goes into a 3D engine, etc and work at it for a few years, and surprise him with something we can probably work on together and make some games with. Please help me out! Thanks!
Perspective is a good thing to have. Once in a while we get the stereotypical "hi I've been programming in C++ for two days how do i make wow?"
This should keep you busy for a few years:
* Learn how to program.
* Learn how to program in C++.
* Get good at the two above. You'll know you're getting better because even your large programs don't crash as often.
* Trigonometry.
* Linear algebra (essential in 3D graphics).
If after all this you still can't make a game engine by yourself, come back for more advice.
I doubt you'll be able to surprise your friend, though. For one, it's hard to surprise someone when you've been working towards something for several years. Second, your first engine won't really be usable other than as "hey, check out what I made".
3-dimensional engine construction takes a lot of work (I'm making one myself :-)). However, the level of complexity is based on 2 factors:
1) The complexity of the graphics library of choice.
2) The complexity of the engine design.
A game engine involves fields such as AI (artificial intelligence), physics, audio, I/O, etc. However, based on the complexity of the engine, some fields, such as physics, can be omitted and still function as expected (but without physics, of course). The check-list is as long as you make it. For example, say you wanted to omit some features, that would reduce the size of the check-list, thus, reducing the production time.
The list is extensive, but like I said, the list is as long as you make it. On the brighter side, the result will be so motivating for you, you'll probably want to improve it. Since you're a beginner though, this may seem very daunting, even for the seasoned professional. However! there's nothing stopping you from writing the engine as you progress through C++.
P.S: I'm building my engine by myself and I'm enjoying the experience. I'm currently working on my memory management system.
You may want to add that a game doesn't necessarily need a general purpose engine, and that writing a general purpose engine can be is, on the programming level, actually more complicated than just writing an actual game.