General 3D Engine Checklist for a C++ Newbie

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!
work at it for a few years
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".
closed account (zb0S216C)
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.

Here's a rough check-list:

1) Artificial Intelligence
- Path Finding algorithms
- Node Paths

2) I/O
- Keyboard Integration
- Mouse Integration
- Joypad Integration

3) Audio
- Surround Sound
- Flat Sound

4) Physics
- Cloth Simulation
- Collision Detection System
- [Optional] - Physics Library Integration (PhysX, for example)
- Object Destruction (for interactivity)

5) Rendering
- Effects
- Geometry Structures
- Geometry Loading
- Geometry Import/Export

6) Memory Management

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.

Wazzak
Last edited on
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.
closed account (DSLq5Di1)
^ Indeedy. Focus on creating a game first! then if desirable, refactor your code into reusable components that you may use in other projects.
Okay! Thank you all so much! I really appreciate it.
Topic archived. No new replies allowed.