How to learn from Quake source code

Started by
46 comments, last by h8CplusplusGuru 6 years, 5 months ago

Hello friends! I'm very curious how I can learn eveything about quake engine using quake source code in the fastest and most useful way? I have no expirience and I'm learning c++.

Advertisement

Do you want to look at the Quake code just out of curiosity, or do you think it will help you learn C++?   Because if your goal is to learn C++, that's the wrong place to look.   You're better off getting a good C++ book, doing a bunch of small C++ projects, and going to places like StackOverflow to ask questions and learn new things.   Looking through big, complicated codebases wont help you that much, especially not one that's mostly C and not C++.

Just now, 0r0d said:

Do you want to look at the Quake code just out of curiosity, or do you think it will help you learn C++?   Because if your goal is to learn C++, that's the wrong place to look.   You're better off getting a good C++ book, doing a bunch of small C++ projects, and going to places like StackOverflow to ask questions and learn new things.   Looking through big, complicated codebases wont help you that much, especially not one that's mostly C and not C++.

I want to understand what's going on in the code, what it's doing and why it works. I would like to make my own quake engine using that knowledge in the future. I don't know c++ very well yet, but I'm learning it via SoloLearn course.

You might find these helpful:

http://fabiensanglard.net/quakeSource/

http://fabiensanglard.net/quake2/index.php

http://fabiensanglard.net/quake3/index.php

also what is your goal exactly?  Graphics programming has changed quite a bit over the years.  Why quake?  Why not Doom3?

-potential energy is easily made kinetic-

4 minutes ago, Infinisearch said:

Yes, it's interesting, but I still don't understand all things.
That's look promising, but incomplete:

 

8 minutes ago, Infinisearch said:

also what is your goal exactly? 

I want to understand how it was done from the roots. And how programmers implemented all this greatest things in games like Ultima Underworld, Maraphon, Descent. Terminator Future shock - all this games influenced gamedev. I would like to know how they made it from scratch. I guess in this time there wasn't things like github. For example, freelook.
 

 

15 minutes ago, Infinisearch said:

Graphics programming has changed quite a bit over the years.

yes, iirc today OpenGL/DirectX make a lot, but I feel that I need to know how it was done under the hood. Software rendering.
 

 

17 minutes ago, Infinisearch said:

Why quake? 

I guess it's much simpler and easy than modern engines like CryEngine or Unreal to learn.
 

 

18 minutes ago, Infinisearch said:

Why not Doom3?

Maybe it's next step for learning. I would like to learn thing step by step from simple to complex.

32 minutes ago, Michael Davidog said:

Maybe it's next step for learning. I would like to learn thing step by step from simple to complex.

I'm not sure why you think older game engines or games are "simple". Most of them use old fashioned techniques of doing things, or things that applied to the kind of environment and software that was around at the time, they're often extremely cryptic as well.

If you think you'll be remaking the quake engine by yourself then moving on to make a later game engine or something, don't bother, you'll spend your entire life trying to recreate engines made by dozens of people over multiple years. Although old software, the man hours invested in older games and engines is not trivial, they worked just as hard as people do now.

1 hour ago, Michael Davidog said:

Yes, it's interesting, but I still don't understand all things.
That's look promising, but incomplete:

What don't you understand?  Also those pages suggest books as learning resources did you see that?  Also if you want it all laid bare for you whats the point of going through the source?  Then your question should have been how did these games work?

1 hour ago, Michael Davidog said:

- all this games influenced gamedev. I would like to know how they made it from scratch.

They influenced game development back then.  Modern games are different and use different techniques than the games from that era.  If by "scratch" you mean software rendering then you should ask that instead.  If want to know other things like BSP's or client server architecture then the links I provided will give you some insight especially if you read the source code as well.

Anyway if you're doing this to get some insight into how things work fine but like stated Old games are just different not any simpler... in fact they might be more complicated since in the case of software rendering they had to implement things themselves and optimize it to run on machines that weren't that powerful.

-potential energy is easily made kinetic-

5 hours ago, Michael Davidog said:

I want to understand what's going on in the code, what it's doing and why it works. I would like to make my own quake engine using that knowledge in the future. I don't know c++ very well yet, but I'm learning it via SoloLearn course.

I think you're asking for a lot of frustration and wasted time.  Looking through the code out of curiosity to see how they did things is perfectly fine, but things were different then and a lot of the things they did dont make sense now.  You will be spending a lot of time looking through arcane code that does stuff you cant figure out, and is poorly documented, and for what?   What you probably want to know are things like did they use software rendering, and if so how does that work.  What spatial partitioning did they use, and how did those work?   You can get this type of information better by just asking people around here.  Looking through the code will tell you how they implemented certain things, but it's not the first place I'd look to get ideas of how those games were put together.   

This is like looking at a soup and trying to figure out how the cook made it.  Good luck figuring it out.  And having a magnifying glass will give you some more clues, but it still wont tel you how the soup was made... just what ingredients are in it.   You're better off reading a cookbook about soups. 

5 hours ago, Michael Davidog said:

Hello friends! I'm very curious how I can learn eveything about quake engine using quake source code in the fastest and most useful way? I have no expirience and I'm learning c++.

Your question is like "How can I build a Formula 1 car as fast as possible? I have 3 boxes with parts of an complete go-kart to learn from. I am learning biking currently."

The answer is of course, ignore the old boxes, as you won't make head or tails from it without deep knowledge about go-karts and Formula 1 cars. Instead please continue learning to bike. Then move forward to using it in practice (ie make your own programs so you get experience). Learn how to drive a go-kart, learn how to drive a Formula 1 car (ie use todays Game Engines and the techniques in it so you can understand what they use to achieve their goal).

By then, reconsider your goals (if not earlier). You may find other goals along the way that look more interesting to you.

Michael Abrashs book has a lot about quake in final chapters: http://www.jagregory.com/abrash-black-book/

It delivers a good impression of the problems at that time, what has been tried to solve them, and what finally worked good enough. The book might be better to learn than the code, and it should make it a lot easier to understand the code (i agree with others there is little value to do this in depth, but understanding the ideas behind it still makes sense.)

This topic is closed to new replies.

Advertisement