Jump to content

Are there documentations containing literally EVERYTHING of C++ and DirectX 12?

Gat Pelsinger

 

I am a programming beginner, and I have quite large dreams of a making an advanced game with my own built game engine. All this time, I gathered basic C++ programming knowledge from external classes, and some information from here and there, but I am still missing out on a lot of stuff C++ has to offer, and I am only 14, so can't yet get the actual main programming knowledge in my education course. So what I am looking for is a documentation containing literally everything pre-programmed in C++ and DirectX 12, so all the header files, all the functions, parameters, values, classes, and stuff that these have to offer. So where can I get one? Something free is always better.

Microsoft owns my soul.

 

Also, Dell is evil, but HP kinda nice.

Link to comment
Share on other sites

Link to post
Share on other sites

Here's the draft for the newest C++ standard: https://github.com/cplusplus/draft

 

And here's a great resource for most of cpp stuff: https://en.cppreference.com/w/

 

And here's the reference for DX12: https://docs.microsoft.com/en-us/windows/win32/direct3d12/direct3d-12-graphics

 

Those were just a quick google away.

FX6300 @ 4.2GHz | Gigabyte GA-78LMT-USB3 R2 | Hyper 212x | 3x 8GB + 1x 4GB @ 1600MHz | Gigabyte 2060 Super | Corsair CX650M | LG 43UK6520PSA
ASUS X550LN | i5 4210u | 12GB
Lenovo N23 Yoga

Link to comment
Share on other sites

Link to post
Share on other sites

The best way to learn programming is by doing it. Find some tutorials and start writing programs. You're not going to need the language specification and standard library documentation until you've got enough experience to actually understand what those are talking about.

 

Unless you're comfortable writing basic applications in C++, I would also recommend to stick to learning more about C++ first, before getting into DirectX. Otherwise, you'll have hard time following most tutorials, because they are going to assume you already know how to code and just want to learn how to use DirectX.

Remember to either quote or @mention others, so they are notified of your reply

Link to comment
Share on other sites

Link to post
Share on other sites

Start small. 

 

Good luck! 

Link to comment
Share on other sites

Link to post
Share on other sites

 

2 hours ago, RTXboy123 said:

I am only 14, so can't yet get the actual main programming knowledge in my education course.

Vector calculus and discrete mathematics are very helpful for low level game design. If you have opportunities to take advanced math courses while in high-school that can give a big head start. 

If your question is answered, mark it so.  | It's probably just coil whine, and it is probably just fine |   LTT Movie Club!

Read the docs. If they don't exist, write them. | Professional Thread Derailer

Desktop: i7-8700K, RTX 2080, 16G 3200Mhz, EndeavourOS(host), win10 (VFIO), Fedora(VFIO)

Server: ryzen 9 5900x, GTX 970, 64G 3200Mhz, Unraid.

 

Link to comment
Share on other sites

Link to post
Share on other sites

Guys, I know I am just 14, and I am trying to take really big steps, but guys, I am just still planning out stuff. I know becoming a programmer is a very long journey, but let me at least just see what all I got in the cool dude programmer syllabus. Again, I am just talking about stuff, and I might not be able even wrap my head around stuff, but the reason I am thinking so fast is that I am really interested into programming, but I just can't actually program because I don't know stuff. BTW, I have taken some tutorials on basic OpenGL programming, so I am not new to these stuff. I just at least wanna see, and then kind of prepare for it, and actually plan for it, I know I can't become a programmer in a few days. I have no path set to my already settled goals, I am just giving a try.

Microsoft owns my soul.

 

Also, Dell is evil, but HP kinda nice.

Link to comment
Share on other sites

Link to post
Share on other sites

11 minutes ago, RTXboy123 said:

Guys, I know I am just 14, and I am trying to take really big steps, but guys, I am just still planning out stuff. I know becoming a programmer is a very long journey, but let me at least just see what all I got in the cool dude programmer syllabus. Again, I am just talking about stuff, and I might not be able even wrap my head around stuff,

I want you to succeed, so I'm preaching slow because I didn't. 

11 minutes ago, RTXboy123 said:

but the reason I am thinking so fast is that I am really interested into programming, but I just can't actually program because I don't know stuff. BTW, I have taken some tutorials on basic OpenGL programming, so I am not new to these stuff.

Great! Practice it or practice regular c++. If you know how much c++ you know, we can help guide you to learn more or help you with a project you want to make. 

11 minutes ago, RTXboy123 said:

I just at least wanna see, and then kind of prepare for it, and actually plan for it, I know I can't become a programmer in a few days. I have no path set to my already settled goals, I am just giving a try.

We'll do the best we can plan your path based on your goals. 

Link to comment
Share on other sites

Link to post
Share on other sites

37 minutes ago, RTXboy123 said:

Guys, I know I am just 14, and I am trying to take really big steps, but guys, I am just still planning out stuff.

There's no hurry, really. The better you understand and can apply the fundamentals, the easier a time you'll have understanding the more complicated stuff.

 

One of the easiest mistakes you can make is trying to learn everything all at once. If you don't have a good grasp on programming in general, or C++ in particular, the more often you'll get stopped from progressing with e.g. DirectX, because you'll be bumping into limits elsewhere. This can make learning new stuff really frustrating, because you're constantly distracted by other things you need to understand first. So I'd really advise you to stick to one topic at a time and try to learn more fundamental stuff first instead of starting with the most complicated ones.

 

I've tried to learn multiple things at once and it's really frustrating, because you want to get ahead with one topic, only to be stopped because you don't understand the basics it is built on, making you constantly switch between things you need to learn first, ultimately getting nowhere.

Remember to either quote or @mention others, so they are notified of your reply

Link to comment
Share on other sites

Link to post
Share on other sites

3 hours ago, RTXboy123 said:

 am really interested into programming, but I just can't actually program because I don't know stuff

 

3 hours ago, RTXboy123 said:

I am not new to these stuff.

Computer science is difficult, it takes a long time to learn the concepts. The reason people are nudging you away from diving into graphics APIs is because it can very easily set you back.

 

Imagine you are learning a foreign language, lets say Latin. You are halfway through learning the alphabet, you know some words, a few of the grammatical rules etc, and then you try to read Tacitus. the text is going to be so difficult to parse that you will not really gain much from looking at it. sure you may pick up a word or two, but you aren't actually improving your skills. Diving into advanced 3d programming is like trying to read Tacitus. 3d programming is difficult and tedious and you won't get far without good fundamental knowledge about the toolset you are using.

 

Additionally and please do not take offense, questions like this will lead people to assume lack of knowledge (which is ok!). The question you asked is a very basic question about an advanced field and leads people to believe you are jumping the gun.

 

I spent years in highschool trying and failing to learn how to program. I wanted to be a penetration tester or white hat, so I kept trying to learn about advanced cryptography, but I didn't understand any of it, I refused to put in the time to learn the basics, because I thought that if i just jump to the advanced stuff, the easier stuff will come naturally.

 

In truth I wasted that time. I didn't take opportunities presented to me and I set myself back. I now get to work on industrial robots and all is well, but that is because I put my head down and learned how to do stuff the right way.

 

Good luck! Eventually you will be pushing quads and tris to the world.

 

 

If your question is answered, mark it so.  | It's probably just coil whine, and it is probably just fine |   LTT Movie Club!

Read the docs. If they don't exist, write them. | Professional Thread Derailer

Desktop: i7-8700K, RTX 2080, 16G 3200Mhz, EndeavourOS(host), win10 (VFIO), Fedora(VFIO)

Server: ryzen 9 5900x, GTX 970, 64G 3200Mhz, Unraid.

 

Link to comment
Share on other sites

Link to post
Share on other sites

I wouldn't actually take such a big step. Use an existing engine first and get some experience making a few games before writing your own engine. 

 

I have known some programming prodigy your age who are already coding at an advanced level but none of them went from "let's watch some programming tutorials" straight to "now I will create a game engine!". This is like you saying I will do 10 push ups and then go compete in the Mr. Olympia.

 

Sudo make me a sandwich 

Link to comment
Share on other sites

Link to post
Share on other sites

2 hours ago, wasab said:

I wouldn't actually take such a big step. Use an existing engine first and get some experience making a few games before writing your own engine. 

 

I have known some programming prodigy your age who are already coding at an advanced level but none of them went from "let's watch some programming tutorials" straight to "now I will create a game engine!". This is like you saying I will do 10 push ups and then go compete in the Mr. Olympia.

 

There are a few arguments for either direction. 

 

Da fluffy potato is a YouTuber that uses python and a 2d API called pygame. 

From my experience, both no engine and engine game programming are as different as frontend programming is to backend programming. 

The way you write code is definitely different. 

If you want a job, you should NOT use a game engine. 

If you want to make games, use a game engine. 

 

Graphics are one component of a large array of  systems in a game engine. 

You also have 

-input handling

-physics/dynamic interaction

-loading assets

-de loading assets

-loading and managing levels/missions

-sound and related sound systems

-things in the game (gun, wall,)

-potential navigation for AI

-potential netcode if you hate yourself or plan it from the start

 

And either more or less depending on the game & design of your tech. 

 

So in summary, we want OP to take things slow, and depending on his goals, we will do what we can to guide him. 

If you can write to the console, you can make a text adventure. 

You can also learn some stuff by doing text graphics for maps. So on. 

 

Obviously he want to do cool graphics stuff, so we can help guide him to being good at graphics. He started with open gl, but without knowing where he is; he might be ready for advanced theory, otherwise he might need to learn about pointers and memory. 

Link to comment
Share on other sites

Link to post
Share on other sites

2 hours ago, fpo said:

If you want a job, you should NOT use a game engine.

If you want to make games, use a game engine.

I wouldn't put it quite as harshly. Experience developing your own engine can certainly help you find a job. But you can likely get a job without having written your own engine from scratch, as long as you have experience working with/in engines like Unreal and/or Unity and have a firm understanding of modern game engine concepts.

 

3 hours ago, fpo said:

From my experience, both no engine and engine game programming are as different as frontend programming is to backend programming.

True, but having experience with existing engines should give you a good idea how things are done in a modern engine. This should help you develop your own engine.

 

Take a look at how e.g. Unreal Engine solves a particular problem to get an idea how to tackle it in your own engine, without trying to come up with your complete novel concept right from the get go. Once you have the basics down you can work on changing things in a direction you think works better (for you).

 

I mainly work as a backend developer, and I do help out in the frontend team from time to time. You're absolutely correct that there are many things that are done differently, i.e. not every concept of backend development translates to frontend development or is even a good idea to apply to it (and vice versa). But having general experience as a developer still helps. And many concepts do translate and will help you get productive much faster.

Remember to either quote or @mention others, so they are notified of your reply

Link to comment
Share on other sites

Link to post
Share on other sites

6 hours ago, Eigenvektor said:

I wouldn't put it quite as harshly.

I didn't elaborate to keep things simple but TL;DR is that there is a lot of math you don't do when writing using an engine like unity or unreal compared to making your own engine. 

I failed a lot of video game job interviews because they all really really want the math skills tied to programming that are only practiced when not using an engine. 

 

To make games is easier with an engine and as the saying goes "producers want to design games, designers want to design games, programmers want to design games, QA want to design games."

The role of game designer often includes the type of scripting found in using an engine. 

Sure, there's tons of unity programmer jobs, but the competition is so fierce, you better have made a lot of games using unity or unreal and not have just practiced programming.

6 hours ago, Eigenvektor said:

Take a look at how e.g. Unreal Engine solves a particular problem to get an idea how to tackle it in your own engine, without trying to come up with your complete novel concept right from the get go. Once you have the basics down you can work on changing things in a direction you think works better (for you).

Definitely. Unreal and unity did help me come up with solutions to problems. 

However, I'd argue that the best insight to designing engines is by studying theory from game engine resources instead of "reverse engineering" so to speak. 

6 hours ago, Eigenvektor said:

I mainly work as a backend developer, and I do help out in the frontend team from time to time. You're absolutely correct that there are many things that are done differently, i.e. not every concept of backend development translates to frontend development or is even a good idea to apply to it (and vice versa). But having general experience as a developer still helps. And many concepts do translate and will help you get productive much faster.

They do help, and knowing how to make tools that are "standard" in design is a good influence. 

From talking to experts (current game developers that have been in the industry for a while) programmers are programmers and nothing else unless you're in a small team.

 

So, the better mastery you have over "low level" programming as opposed to "high level" programming, the better. 

I'm now a full stack dev by trade, but by study and networking with network programmers, you either use unreal's netcode (requires excellent specialisation), or you write code on the socket level.

IE, No 404 error and having spring do everything for you. 

Net code design can vary drastically based on the project. Wow is web dev so much easier. 

 

Companies either want an expert in the engine (so much competition, just type x years unity and see what you're up against. Then type x years in direct x and see how much smaller that number is)

Or companies want someone that's just pretty good at hard stuff. 

If you're good at hard stuff, the in engine is easier because you can still write "difficult" code in it.

This was all my experience when applying to game developer jobs and talking to real professionals that work in industry, teach at a "real" game development college (as opposed to the cash grabbers that saw unity is free and so is money, but I won't get into it.)

 

 

EDIT

not to de value unity and unreal, one reason I said make games was that if you start to sell them, well then you have a business. 

Completed games make more money than tech demos. 

 

Depending on your end goals, things matter differently. 

Some self employed developers insist on writing your own game engine because it reduces overhead costs and gives you more control over your games. 

Some swear by unity because they don't have to worry about low level bugs that were made when the programmer was less experienced. 

 

All depends on the end goals. 

Link to comment
Share on other sites

Link to post
Share on other sites

An information-needing post getting motivative replies is not what I had in mind. I really appreciate that you strangers are really caring about another stranger's (me) life path and goals, but you all still don't understand.

 

I am at a point where I am just deciding my goals, but having no plan to reach it. I am saying to build a game engine myself, but when I actually give a try, I might not be able to even render a line, but for that, I need to give a try.

 

And ok, you guys say that I should go slow, so lets say I am going slow now, but even I were to go slow, I need to at least first go. If I do not have any knowledge in my hands, how am I going to write a program? By watching only tutorials? That might be a way, but listen, in my understanding, programming involves syntax, logic, and commands or those stuff. For syntax I need to just simply get the knowledge or learn, which I have done; logic takes practice and time, and the commands (what do you call them?) just needs simply looking at them, understand their functionality, and use them to build the program. They are just build blocks, and if I use them right, they make up the actually image (program).

 

Imagine me being as a python master (even though I am not), and then trying to program in C++. I might be knowing the syntax and logic, but I need to know the commands C++ has to offer, like you can't just use "print()" from python and replace it with "cout", you need to know what all there is in the language.

 

So can we all get back to the topic? I just need a documentation containing all C++ and even DirectX 12 stuff. There is only one guy so far answered it properly by giving me some links, but its not very clear for DirectX, and better and actual documentations would be better. If you guys have links to such documentations, then that is exactly what I want, or we will just end this thread. I am not trying to rude btw.

Microsoft owns my soul.

 

Also, Dell is evil, but HP kinda nice.

Link to comment
Share on other sites

Link to post
Share on other sites

2 minutes ago, RTXboy123 said:

but its not very clear for DirectX, and better and actual documentations would be better

Welp, I'm sorry to bring you bad news, but that's the actual official docs from MS. You may find better tutorials, but something like headers and function definitions won't be available since DX is closed source, you need to rely on the API documentation to get stuff done.

FX6300 @ 4.2GHz | Gigabyte GA-78LMT-USB3 R2 | Hyper 212x | 3x 8GB + 1x 4GB @ 1600MHz | Gigabyte 2060 Super | Corsair CX650M | LG 43UK6520PSA
ASUS X550LN | i5 4210u | 12GB
Lenovo N23 Yoga

Link to comment
Share on other sites

Link to post
Share on other sites

If you want to read documentations, they are on the Microsoft documentation page. This is just a couple. 

https://docs.microsoft.com/en-us/windows/win32/direct3d12/direct3d-12-core-reference

 

However, without the necessary prerequisites knowledge and experiences, I doubt you can get much off reading it. Learning the APIs is actually the easy part. How to use them to do the math and draw the graphics is a totally different story.

 

Also, what about physics? You do know games are more than just graphics right? Do you know the kinematic formula to calculate the speed and acceleration when a game characters fall from the sky for example? Do you know the momentum equations needed for when two in game objects collide and bounce off one another in the opposite direction? Do you know the necessary math equations needed to do the calculation for particle effects when xyz object explodes? It is more than just coding and learning to code. 

 

I doubt you can accomplish much without the theoretical knowledge in place. 

Sudo make me a sandwich 

Link to comment
Share on other sites

Link to post
Share on other sites

6 hours ago, RTXboy123 said:

I am at a point where I am just deciding my goals, but having no plan to reach it. I am saying to build a game engine myself, but when I actually give a try, I might not be able to even render a line, but for that, I need to give a try.

No problem! If you want to make a game engine, a great way to practice is to pick a game you want to make, brainstorm some architecture, do some research and see what you can figure out.

When you run into problems or want us to look over your design documents, make a thread & we'll help you out!

 

Since you want to make a game engine, pick a game you want to remake and I can give you some ideas on how to plan it.
Something really good to look up is called "UML" which is a flowchart that shows a non-technical person what something does.

6 hours ago, RTXboy123 said:

And ok, you guys say that I should go slow, so lets say I am going slow now, but even I were to go slow, I need to at least first go.

Depends where you are. How much programming do you know? Of course, you can start a large project if you can figure a good way to go about it. If you can sorta figure things out, then you will learn more along the way with a larger project.
I think you might be getting caught up in us warning you how complex C++ and low level graphics APIs are. We're also warning you how big of a project a game engine is.It's a very broad term.

6 hours ago, RTXboy123 said:

If I do not have any knowledge in my hands, how am I going to write a program? By watching only tutorials? That might be a way, but listen, in my understanding, programming involves syntax, logic, and commands or those stuff. For syntax I need to just simply get the knowledge or learn, which I have done;

I hate tutorials.. they drive me insane hahaha.
If you know quite a bit of C++, then maybe you're ready. I think I asked you how much C++ you know in one of your threads, but I didn't get an estimate, so we're erring on the side of caution assuming you don't know much programming. One reason we've been giving vague advice.

6 hours ago, RTXboy123 said:

Imagine me being as a python master (even though I am not), and then trying to program in C++. I might be knowing the syntax and logic, but I need to know the

commands C++ has to offer, like you can't just use "print()" from python and replace it with "cout", you need to know what all there is in the language.

Yeah, especially since C++ is much different from Python which is a language a lot of people start with.

6 hours ago, RTXboy123 said:

So can we all get back to the topic? I just need a documentation containing all C++ and even DirectX 12 stuff.

This reply in this thread has links to the documentation you requested. You can also check out some textbooks. The only C++ book I have is "Absolute C++" by Walter Savitch and it's good in my opinion, but different people have different thoughts on what books are good:

6 hours ago, RTXboy123 said:

There is only one guy so far answered it properly by giving me some links, but its not very clear for DirectX, and better and actual documentations would be better.

To be fair, documentation often sucks depending on who wrote it. I personally hate Cplusplus.com

 

The DirectX link has a guide and a direct reference for commands. Could it be better? meh, prolly...

 

Sometimes you need to start with tutorials whether by youtube, text based tutorials, or paid, like by skillshare.com or udemy.com
I agree, documentation often sucks. It demands a lot from its readers. Certain textbooks are better than others, certain teachers are better than others.

 

If you know OpenGL enough to do some stuff, then learn more Open GL. When you get to college, look for one that does DirectX if that's what you want to learn. If you want to learn Vulkan, look for one that does Vulkan.
Make sure the majority of the curriculum covers the API you want to learn. A class or two is not going to give what you want.

6 hours ago, RTXboy123 said:

If you guys have links to suck documentations, then that is exactly what I want, or we will just end this thread. I am not trying to rude btw.

No worries. Some cultures have phrasing that can come off as harsher to other cultures and you want something specific.

Link to comment
Share on other sites

Link to post
Share on other sites

16 hours ago, RTXboy123 said:

So can we all get back to the topic? I just need a documentation containing all C++ and even DirectX 12 stuff. There is only one guy so far answered it properly by giving me some links, but its not very clear for DirectX, and better and actual documentations would be better. If you guys have links to suck documentations, then that is exactly what I want, or we will just end this thread. I am not trying to rude btw.

And that one guy gave you a link that leads to the official documentation, if you want tutorials that hold your hand firmly then maybe check out this video series

 

ಠ_ಠ

Link to comment
Share on other sites

Link to post
Share on other sites

Honestly @RTXboy123, your replies just smack of self-importance, since you clearly don't know what you don't know but accuse others of not listening to you. Let me tell you how you sound:

 

"Hey guys, I'm an engineering beginner and I have quite large dreams of making a car with my self-built production line. All this time I've gathered basic knowledge about screws, nuts and bolts. What I'm looking for is all the documentation listing all the specifications for every single screw, nut and bolt as well as their corresponding screwdrivers and wrenches in existence."

 

None of those spec sheets are going to teach you how to build a production line or how to design a car. And more importantly, front-loading your knowledge is not useful. If you think you need to be 100% prepared to do something, you'll never be prepared, because you will never know 100% about something. The best way to approach something like this is just to actually start doing it and whenever you encounter something you don't know how to solve to look for help. The ability to efficiently look up documentation, tutorials or other solutions on the fly is invaluable for any programming related task. It's not about knowing everything. It's about knowing where to look for all the knowledge you don't currently have in your head. And you're not training that skill by asking people to just hand you a list of docs.

And now a word from our sponsor: 💩

-.-. --- --- .-.. --..-- / -.-- --- ..- / -.- -. --- .-- / -- --- .-. ... . / -.-. --- -.. .

ᑐᑌᑐᑢ

Spoiler

    ▄██████                                                      ▄██▀

  ▄█▀   ███                                                      ██

▄██     ███                                                      ██

███   ▄████  ▄█▀  ▀██▄    ▄████▄     ▄████▄     ▄████▄     ▄████▄██   ▄████▄

███████████ ███     ███ ▄██▀ ▀███▄ ▄██▀ ▀███▄ ▄██▀ ▀███▄ ▄██▀ ▀████ ▄██▀ ▀███▄

████▀   ███ ▀██▄   ▄██▀ ███    ███ ███        ███    ███ ███    ███ ███    ███

 ██▄    ███ ▄ ▀██▄██▀    ███▄ ▄██   ███▄ ▄██   ███▄ ▄███  ███▄ ▄███▄ ███▄ ▄██

  ▀█▄    ▀█ ██▄ ▀█▀     ▄ ▀████▀     ▀████▀     ▀████▀▀██▄ ▀████▀▀██▄ ▀████▀

       ▄█ ▄▄      ▄█▄  █▀            █▄                   ▄██  ▄▀

       ▀  ██      ███                ██                    ▄█

          ██      ███   ▄   ▄████▄   ██▄████▄     ▄████▄   ██   ▄

          ██      ███ ▄██ ▄██▀ ▀███▄ ███▀ ▀███▄ ▄██▀ ▀███▄ ██ ▄██

          ██     ███▀  ▄█ ███    ███ ███    ███ ███    ███ ██  ▄█

        █▄██  ▄▄██▀    ██  ███▄ ▄███▄ ███▄ ▄██   ███▄ ▄██  ██  ██

        ▀███████▀    ▄████▄ ▀████▀▀██▄ ▀████▀     ▀████▀ ▄█████████▄

 

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×