So I Reviewed the DOOM 3 Source Code..

Поделиться
HTML-код
  • Опубликовано: 1 фев 2025

Комментарии • 256

  • @Tariq10x
    @Tariq10x  4 месяца назад +20

    Since you pizza+coffee enjoyers liked this video, I made a 52min video where I step-by-step compile a Doom 3 source code port and run it ruclips.net/video/sHLHTiVJH4w/видео.html

    • @Puxi
      @Puxi 20 дней назад

      The problem is, the code is based on gugugaga+ it is a subsidiary of c++ made of sing tao.

    • @JackWse
      @JackWse 13 дней назад

      In order to gain power over the function, you must know it's true name.. not just its name, not just references, not even its contents or logic.. you must find that whom pecking into the sacred glyphs, formed its shape and it's very being that you see before you.. for only they know the true name, and they will not leave it in the comments.. although they might leave a hint.
      You must then seek out this sculptor of The laws and fundamental sciences of this micro universe you hold before you.. only in blueprint.. only in theory... You must knock upon their dwelling three times, and on the third time, you will step back, and the key will be revealed to you... What form it comes in May vary, be it the sequence of runes in their correct order that gains entrance.. or one might find its entrance simply unlocked to you and open.. One might find even a key of the The ancient metal workers, crafted upon their mill, cut from their arcane alchemy and knowledge of metals and Windows XP.
      It is at this point you have a choice, you can still turn back, but all that you have struggled for will be lost, and all before you will become an ulcer that rots in the absence of what could have been gained... or you enter...
      What you find, it must be kept secret... The next few moments could very well be fraught with peril and your journey could end, or worse, be forever altered into a twisted path of pain and suffering and nullified silence, as your personhood is stripped from you.. and what you will have to do to gain the knowledge you seek, you may not ever be able to look at yourself the same again.. for you may have to do things that you not thought capable, or perhaps you thought yourself too capable and find yourself sickened at the Glee which dwells and grows within.
      Should both of you continue forward through time after... Sharing that between you will forever drain at each of your soul, and you will be forever linked.. should only one of you exist, you will forever have consumed that which was once another's, compounding and multiplying your own strength common knowledge and agency.
      When the function has become yours, when you know it's true name when it's mother has been decompiled and her secrets of her offspring have been consumed and absorbed.. you will truly know how to convert The single inventory item into a flush of every single one, as it transforms itself into the item that a player would select.. as if it were another.. yet is all one.. or many other secrets that are often fascinating and probably ill advised ways in order to go about doing certain things in your own universe that you craft.
      That being said the player controller has some juicy parts, but.. their names are... lol One does not simply walk into Texas, and an attempt to take from that which is outside of time and space, The preacher of Con, the man of id, The Slayer of Chase..
      And those that have been so pathetic in their attempts have all been dealt with accordingly, their life choked about them regardless of their scale or prowess.. see the accounts of the Chase Hall, of the monolith people in the Northwest for a tale of caution of those whose ambition was asphyxiated.

  • @designator7402
    @designator7402 5 месяцев назад +281

    I'm sorry but I'll have you know that my diet consists mostly of pizza and _hard liquor._

    • @Tariq10x
      @Tariq10x  5 месяцев назад +25

      Going hard in the paint

    • @rawallon
      @rawallon 5 месяцев назад +8

      Wow coke zero is considered hard now?

    • @TheDoomerBlox
      @TheDoomerBlox 5 месяцев назад +5

      Ah, irish coffee.

    • @ChristianIce
      @ChristianIce 5 месяцев назад +2

      Pizza and Beer here.

    • @donwald3436
      @donwald3436 27 дней назад

      Same but with no pizza lol.

  • @emperorpalpatine6080
    @emperorpalpatine6080 6 месяцев назад +83

    went straight to the fast inverse sqrt lol.
    I had literally the same reflex when I opened that repo for the first time a year ago.
    it's like going to the museum and seeing some old tool that people used thousands of years ago.
    I really don't know why you don't have more subs , I agree with that other comment , this is really good .

    • @Tariq10x
      @Tariq10x  6 месяцев назад +10

      I try to deliver quality content, the rest will follow 👌 thx for the support bro

  • @Branchie
    @Branchie 5 месяцев назад +179

    Oh man, that intro was too real.

  • @ruadeil_zabelin
    @ruadeil_zabelin 5 месяцев назад +90

    6:50 They didn't import this from previous projects as this was John Carmack's and by extension Id's first project in C++. They had used only C up until this point. The codebase is also written very c-style.

    • @the_kovic
      @the_kovic 5 месяцев назад +17

      "Very C-style"
      People keep repeating that but we just saw that the code has a huge entity inheritance chain and a custom STL string implementation. This is classic C++ stuff.

    • @yaghiyahbrenner8902
      @yaghiyahbrenner8902 5 месяцев назад +10

      @@the_kovic You need to listen to the interview with John and stop whining , John said majority of the code uses C and some aspects of C++ are used. STL and Inheritance are barebones C++.

    • @gavinrolls1054
      @gavinrolls1054 5 месяцев назад +1

      ​@@the_kovic womp womp

    • @delphicdescant
      @delphicdescant 5 месяцев назад +9

      Apparently people are disputing whether this is written in "very C-style" or not.
      I'd just like to throw in the inflammatory opinion that it *should* be written in a C-style, because what C++ added to C was 80% committee-designed antifeature cruft, and 20% useful stuff that won't give you a migraine.
      And no, "modern C++" doesn't help.

    • @ruadeil_zabelin
      @ruadeil_zabelin 5 месяцев назад +4

      @@delphicdescant As a 15+ year experience C++ dev coming from C before that... its very C style. Yea theres classes and some overloads but.. a lot of the implementations are not c++'ish at all

  • @bruterasta
    @bruterasta 5 месяцев назад +86

    I never knew someone could know me so well just after first six seconds of him speaking to me.

  • @ExpensivePizza
    @ExpensivePizza 5 месяцев назад +67

    It's actually a really well written code base. Way better than any code I've seen in most companies and open source projects.
    Why? Attention to detail. Every class is clear and well defined. Conventions are used consistently and the project structure is organized.
    The comments are there to provide additional context rather than just repeating the variable names.

    • @delphicdescant
      @delphicdescant 5 месяцев назад +2

      I'd mostly agree, except that even just in this video there are a lot of examples of pointless comment blocks that take up like 5 lines just to repeat a function name and nothing else. Like around 9:35

    • @ExpensivePizza
      @ExpensivePizza 5 месяцев назад +3

      @@delphicdescant Fair point but it's also a good to remember not to let perfection be the enemy of good.

    • @delphicdescant
      @delphicdescant 5 месяцев назад +3

      @@ExpensivePizza Sure, I agree. I think the constant online debates about code style and commenting (and even the common assertion that whatever you do, be consistent) are overblown in general and tend to waste a lot of time.
      But there are so many things in the software industry that are time wasters like this. Even concerning ourselves about the fact that they waste time is, on it's own, a massive undertaking and ultimately a big waste of time.
      So what conclusion can I draw? None at all, except that I think the software industry could benefit from its own version of Dadaism.

    • @ExpensivePizza
      @ExpensivePizza 5 месяцев назад +1

      ​@@delphicdescantHaha. At least we have Jonathan Blow doing his best to change the industry 😂

    • @mleise8292
      @mleise8292 4 месяца назад +3

      The are (or were) in a tradition of releasing the source code a few months after the release of their games. You author code differently when you know the public will judge you. Also less locker room jokes in the comments, I suppose. 😅

  • @severgun
    @severgun 5 месяцев назад +56

    Absolutely every c++ project: "lets implement our own strings"

    • @mattmurphy7030
      @mattmurphy7030 5 месяцев назад +10

      Game programmers love to hate the STL

    • @Special1122
      @Special1122 5 месяцев назад +2

      what is the reason behind that?

    • @mattmurphy7030
      @mattmurphy7030 5 месяцев назад +12

      @@Special1122 games usually implement their own strings to control allocation. Although c++ strings support small string optimization, when you break that limit, they can result in lots of fragmenting allocations.
      With modern STL supporting custom allocators it’s much less of an issue than it used to be. The games industry just hasn’t caught up.
      EA even reimplemented the complete STL. They aren’t gonna throw away that institutional knowledge just because.

    • @acasualviewer5861
      @acasualviewer5861 5 месяцев назад +2

      @@Special1122 when the first version of Doom came out there was no STL.

  • @phat80
    @phat80 4 месяца назад +12

    For sure it’s not a Rust part as Github says. It’s some files with .rs extension that Github treats as rust files. I’ve already encountered such projects on Github where strange languages for the particular project were shown. And after opening them I saw that it’s not a file written in that language. It’s just files with the extension of that language. It means Github doesn’t analyse files’ content for the statistics, just extension.

  • @yaghiyahbrenner8902
    @yaghiyahbrenner8902 5 месяцев назад +7

    For me the most impressive code in the codebase is the compiler, the guy who was on the project John made a point to say when working on D3 it was clear we had bright minds on our team that exceeded areas of knowledge that he has example writing a script compiler was one such skill.

  • @julianelmasry9556
    @julianelmasry9556 6 месяцев назад +12

    Your channel is so underrated. This content is pure gold

    • @Tariq10x
      @Tariq10x  6 месяцев назад +3

      I appreciate the nice comment bro ❤️ Im glad you found the video helpful ✌️

  • @sadunozer2241
    @sadunozer2241 5 месяцев назад +5

    I subscribed because of the self burn “if you are not watching the video, that’s because you are making the video” 😂😂😂

  • @AlenDelon-x6i
    @AlenDelon-x6i 20 дней назад +4

    As a matter of fact I did have pizza last night and I AM drinking coffee rn. That’s insane bro.

    • @Tariq10x
      @Tariq10x  20 дней назад +1

      Im eating pizza while reading this comment, not even joking bro

  • @peterjohnson9438
    @peterjohnson9438 5 месяцев назад +31

    pretty sure those AI_ prefixed variables stand for "abstract input", not "artificial intelligence"

    • @James2210
      @James2210 2 месяца назад +1

      in a different context it could be enemy AI (e.g. not machine learning)

    • @JackWse
      @JackWse 13 дней назад

      An abstract input for sure, the abominable intelligence is only a sin akin to the worst of heresies and the most despicable offence to the omnisiah. This is knowledge to be kept not to be learned, y'all are hereteks, and I will thwart your corruption!

  • @Markus_included
    @Markus_included 5 месяцев назад +12

    18:25 this is function overloading, polymorphism usually means overriding virtual functions from a base class

    • @Tariq10x
      @Tariq10x  5 месяцев назад +8

      Thanks bro for politely pointing out the mistake! I really appreciate it ✌️

    • @SMorales851
      @SMorales851 5 месяцев назад +7

      Function overloading is also polymorphism. Overriding virtual functions is a specific type of polymorphism (dynamic, or runtime polymorphism), but function overloading and template functions and types are also considered polymorphic. They are just examples of static or compile-time polymorphism.

    • @johndoe-j7z
      @johndoe-j7z 5 месяцев назад +1

      @@SMorales851 Correct. @Markus_included is thinking of method overriding in inheritance which is a form of polymorphism (dynamic). But function overloaded is also a form of polymorphism (static).

    • @johndoe-j7z
      @johndoe-j7z 5 месяцев назад +1

      @@Tariq10x You were right bro dw.

    • @Markus_included
      @Markus_included 5 месяцев назад +1

      @@SMorales851 You're right, but people don't really use the term "polymorphism" that often when talking about overloads, so I thought he might have mixed up some terminology here

  • @Ch1n4m4nn
    @Ch1n4m4nn 21 день назад

    No programmer, just a modder and an IT guy trying to understand what amazes him since almost 40 years.
    Did a few programs on the C64 in basic and ended up modding games on PC.
    It is always nice to see such videos to understand how things work. If even well explained it's even more awesome🎉

  • @nask0
    @nask0 4 месяца назад +2

    Actually, John Carmack himself told (at Lex Fridman podcast) that he doesn't "invent" the RSqrt himself and was falsly framed for it. You shuold definetely watch it, it's quite good conversation.
    Nice video bro, cheers

  • @sebastercats6123
    @sebastercats6123 5 месяцев назад +15

    It's funny seeing how early 2000s games got so much interest in disecting the codebase, reminds me of Silent Hill's lost source code and GTA III's reverse engineered game code.
    Makes me wonder how GTA 6 codebase will turn out in the future, and how people will react to it. I remember the leak version of the game, and the game already looks impressive even though it's the *pre-alpha* version!

    • @aboliguu1168
      @aboliguu1168 5 месяцев назад +1

      Yeah these old codebases are very interesting but they definitely show their age. Like in this one the inheritance chain from idClass to Gibbable almost seems like satire of OO. Modern engines are so complex that i’m afraid future coders wont be able to disect their codebases

    • @rawallon
      @rawallon 5 месяцев назад

      @@aboliguu1168 Have you ever worked in a complex OO system? That's not satire, thats the reality, you start with the most general class that doesn't have any solid implementation and go building from that

    • @aboliguu1168
      @aboliguu1168 5 месяцев назад +3

      @@rawallon obviously it’s not satire lol, it’s from a serious game project. I hope you realised that although the programming community is pretty bad at sarcasm due to above average amount of autism in this field.
      The point was that that kind of deeply nested inheritance is exactly what people mostly hate about OO these days. It could almost be in a twitter post about horrors of Oo

    • @giornikitop5373
      @giornikitop5373 5 месяцев назад +1

      @@aboliguu1168 ppl hate it, yet they still heavily use it. meh, always a catch.

  • @com0oan
    @com0oan 5 месяцев назад

    Thanks A LOT for this video! Love videos about reading codebases!

  • @sparshpriyadarshi
    @sparshpriyadarshi 5 месяцев назад +5

    "if you're not watching the video, you're making the video" xD

  • @roz1
    @roz1 5 месяцев назад +3

    Man u r making a very important video... How to read a code base that is not explained, no docs and few to no comments.... This is really really a necessity as the team expects u to work like them from day 1

  • @abc123evoturbobonker
    @abc123evoturbobonker 5 месяцев назад +5

    I switched from pizza to fish fingers and chips, refactor was worth it

  • @comic-typ5919
    @comic-typ5919 13 дней назад +1

    I really like your channel :D

  • @Malkovith2
    @Malkovith2 5 месяцев назад +1

    All of those things are so intimidating. I know I can grasp them over years, but seeing all this is scary. I have so much to learn. For now I'll stick to GDscript and finish my first 2D game.

  • @Super.Whimsy
    @Super.Whimsy 5 месяцев назад +1

    Any video that starts with “Why are we even doing this?” has me along for the ride. BECAUSE WE CAN.

  • @vosdraug4628
    @vosdraug4628 4 дня назад

    The 10 first seconds had me laughing out loud.

  • @ramonpereira4460
    @ramonpereira4460 3 дня назад

    You had me at the happy since Diablo 2

  • @GottZ
    @GottZ 5 месяцев назад +2

    that moment when you didn't "see" through the scripting language interpreter doing a function lookup

  • @winterboltgames
    @winterboltgames 5 месяцев назад +7

    Man, I was finishing my pizza and making coffee as this intro played. What the...

  • @Josephryanbanks
    @Josephryanbanks 27 дней назад

    Called out immediately upon clicking this video… this is gonna be good.

  • @bryanjohnson4819
    @bryanjohnson4819 6 месяцев назад +2

    Glad to find this channel

    • @Tariq10x
      @Tariq10x  6 месяцев назад

      Glad to hear that bro ✌️

  • @CharlesVanNoland
    @CharlesVanNoland 5 месяцев назад +1

    It's a lot easier to familiarize yourself with a codebase using a flow graph visualizer instead of surfing through and hunting in the code itself. Sourcetrail is pretty good, and there's Codevis but it requires that projects have a compile_commands.json - which isn't exactly applicable to many projects made with obscure IDEs unless you have a makefile and a tool to generate the json file from it.

  • @freezinfire
    @freezinfire 5 месяцев назад

    This was a good video, keep making videos!

  • @conscientiamstudios
    @conscientiamstudios 5 месяцев назад

    yo creo en mi opinion humilde de programador junior, que en estos casos ahi que utilizar los diagramas UML, yo utilizo StarUML, saludos muy bueno el video ¡

  • @WheatOnToast
    @WheatOnToast 5 месяцев назад

    Very interesting video! If you really wanna get into weird FPS source code, I 100% suggest you check out Quake 4.

  • @onedankindgaming1570
    @onedankindgaming1570 3 месяца назад

    I remember playing this game on a PC that had no business running it AND it was playable. Good ole packard bell.

  • @F00dstamp96
    @F00dstamp96 5 месяцев назад +2

    My diet consist of Zyns and Ravioli

  • @ffs55
    @ffs55 5 месяцев назад

    killer opening line -- nailed it!!

  • @tempsanity
    @tempsanity 5 месяцев назад

    I subscribed immediately after the intro.

  • @anon_y_mousse
    @anon_y_mousse 5 месяцев назад +1

    Just so you know, Id is not pronounced like the acronym ID because it's named for the psychological concept of an id. I'm curious as to why GH thinks there's any Rust in the codebase given that there are no such source files in the entire repo and it was created long before Rust was, but that's an issue I'd have to take up with Microsoft. In the idWorldspawn::Spawn() function where you see them searching for a main function, that's because they loaded a script for the current map being loaded and that's the starting point for the script. I don't know if they still do this in their later engines, but back then at least they had their own custom language for writing scripts that was derived from C. It might be fun to go through the entire codebase and perhaps make a video out of each module. Given that they apparently implemented their own containers, I'm curious what they did differently there from any existing libraries from the same time period.
    Welp, time to go waste an hour reading their hash table implementation.

  • @burnsy96
    @burnsy96 Месяц назад

    Knowing how many lines of source code is about as useful as knowing how many farts the designer of the API took while working on the project.
    You can delete all new lines and still have the project compile with essentially one line of code that way, I'd more interesting in knowing how many class definitions exist

  • @zyhru
    @zyhru 5 месяцев назад

    u need to do more of these, i was so locked

    • @Tariq10x
      @Tariq10x  5 месяцев назад +1

      Thx for the feedback ❤️ I will be making more of these in the future, but with a lot more details.

  • @tomvice
    @tomvice Месяц назад

    I was eating a pizza when it popped up in my yt feed.
    Also, this is beautifully written. Let's go

    • @Tariq10x
      @Tariq10x  Месяц назад

      @@tomvice thanks bro, I write and edit everything by myself 🙏

  • @StigDesign
    @StigDesign 5 месяцев назад

    i dont think rust language existed in 2002-2004 so the rust might be because of the fork on github :) Love this kind of video, i love Doom3 and bfg edition especially with RBDoom3 :D

  • @andrewfielden284
    @andrewfielden284 23 дня назад

    Btw, functions with the same name, but different args isn't polymorphism, it's called overloading.

  • @TalicZealot
    @TalicZealot 5 месяцев назад +5

    Why you gotta call me out on frame 1 like that though

  • @imadetheuniverse4fun
    @imadetheuniverse4fun 3 месяца назад

    bruh, why that insanely accurate call out in the intro, hahaha :'D

  • @ilYa1984
    @ilYa1984 5 месяцев назад

    Friends jokes... So interesting stuff for Quake 3 and Java fun. Thanks.

  • @giornikitop5373
    @giornikitop5373 5 месяцев назад

    d3's source is simply briliant. nothing is hasted or wasted.

    • @jc-iz8lp
      @jc-iz8lp 5 месяцев назад

      Can I ask you why the doom 3 source code is so special? I've seen several video's on it so it must be pretty impressive lol. Don't see any video's on new games their source code

    • @giornikitop5373
      @giornikitop5373 5 месяцев назад

      @@jc-iz8lp most games don't have their source code realeased, that's why there aren't any videos. doom3 is a 20years old game. it's impressive because it uses some smart tricks to use the full potential of that time's hardware (2004) which was a crappy celeron d and gpu and still be one of the best games of the period.

    • @jc-iz8lp
      @jc-iz8lp 5 месяцев назад

      @@giornikitop5373 Then why is this source code released? Did someone leak it or was Bethesda like screw it lol

    • @giornikitop5373
      @giornikitop5373 5 месяцев назад

      @@jc-iz8lp bathesda? id created the game and i think activision published. no it's not leaked, id just made it public in 2011 if not mistaken.

  • @DaveNorthWest
    @DaveNorthWest 13 дней назад

    Its going to be awsome when the someone makes the Doom3 engine have a map editor thats easy to use and bring it to life again

    • @Tariq10x
      @Tariq10x  13 дней назад

      There is one, it is called DarkRadiant, check it out

  • @andrewfielden284
    @andrewfielden284 23 дня назад

    Toughest assignment for devs - understanding and fixing someone else's code.

  • @GhassanPL
    @GhassanPL 5 месяцев назад

    10 seconds in and you've already offended me and spoke nothing but truth at the same time. Damn.

  • @TR-707
    @TR-707 5 месяцев назад +2

    i hope you review Deutsche Bahn C++ next

  • @tigranrostomyan9231
    @tigranrostomyan9231 3 месяца назад

    you are awesome bro

    • @Tariq10x
      @Tariq10x  3 месяца назад

      Thx bro 🤝

  • @pepe6666
    @pepe6666 5 месяцев назад

    burn applied to me. subscribed

  • @JasonKing-m6m
    @JasonKing-m6m 25 дней назад

    This code should be studied because this was highly optimized and ran superbly even on older PCs...

    • @Tariq10x
      @Tariq10x  25 дней назад

      I am almost done with the book „Masters of doom“ and I will definitely do a third video on Doom. The game was so ahead of it’s time it’s unbelievable.

  • @natecoley160
    @natecoley160 3 месяца назад +4

    I like how we learn SOLID concepts and such yet we see all_in_one classes and deep inheritance everywhere in a pretty much complicated game engine and no one complain

  • @raczzoli1989
    @raczzoli1989 14 дней назад +1

    So you basecally cloned the doom repo and read file names in random directories, after that opened some files and read function names from them... and at the end made a video about it :)

  • @darkzeroprojects4245
    @darkzeroprojects4245 5 месяцев назад

    I been wanting to learn to make a engine for a project or two and it having a similar inspired setup to doom 3s source code,though obviously different in everything.
    It's due to how I kind like how since quake 1 game files even mods are setup to be at and whatnot.

  • @DoodlesGaming
    @DoodlesGaming 5 месяцев назад

    Jokes on you, I don't even know how to code, but the pizza and coffee was on point

  • @DeepFriedOreoOffline
    @DeepFriedOreoOffline 29 дней назад

    "And I know your diet mostly consists of Pizza and Coffee"
    Bro, have some respect. Some of us drink tea, lol.

  • @faintsmile3279
    @faintsmile3279 26 дней назад +1

    0:03 bro how am i getting called out in 3 seconds

  • @sergrojGrayFace
    @sergrojGrayFace 5 месяцев назад +2

    I was the most unhappy while playing Diablo 2. This game was made to lure you in and then torture you.

    • @James2210
      @James2210 2 месяца назад

      It's fun while you're playing it, and then the grind hits. I tried to start another character a while ago and couldn't. Definitely better with friends

  • @IAhmadGT
    @IAhmadGT 5 месяцев назад +1

    can you do the same with the source engine (sdk2013 or any the 2020 leaks)?
    it's gonna be so cool :D

    • @Tariq10x
      @Tariq10x  5 месяцев назад +1

      Which one specifically? I will take a look at it 👌

    • @IAhmadGT
      @IAhmadGT 5 месяцев назад +1

      @@Tariq10x well sdk2013 is the limited sdk valve has In GitHub and the 2020 leaks contain the whole engine for hl2 and csgo

  • @ColinBroderickMaths
    @ColinBroderickMaths 5 месяцев назад

    Thanks for this, very interesting. It's clear now why Doom 3 was such a performance hog when it came out. This style of OO programming, using deep hierarchies and lots of behaviour defined inside the classes, is an absolute disaster for memory locality. This means there will be loads of cache misses which waste a huge amount of CPU cycles. This is the main problem that data driven design aims to solve.

    • @giornikitop5373
      @giornikitop5373 5 месяцев назад

      well, there was not that much cache in cpu's those days...

  • @bowiemtl
    @bowiemtl 5 месяцев назад

    Ooh fuck the callout right of the bat, respect!

  • @panjak323
    @panjak323 5 месяцев назад +1

    Why are there mile long gaps between function types and names in classes, but no gaps in cpp function definitions ?

    • @Tariq10x
      @Tariq10x  5 месяцев назад +4

      They are following their own code style conventions. You can find the conventions if you search for "doom 3 code style conventions".
      The idea was to make the code look uniform and visually more appealing.

    • @panjak323
      @panjak323 5 месяцев назад

      @@Tariq10x Hmm. To me it's just more confusing... I'm used to looking at the center of the screen to see function names, so such gaps and weird formatting frick with my brain.

    • @Anticitizen666
      @Anticitizen666 5 месяцев назад +4

      @@panjak323 I'll let John Carmack know. 🤣

  • @ChannelSho
    @ChannelSho 5 месяцев назад

    I haven't looked at the code base, but seeing what they did for strings made me wonder if they basically looked at the vanilla STL then and went "nah, we can do better"
    I wonder if an id STL exists for C++ 🤔

    • @giornikitop5373
      @giornikitop5373 5 месяцев назад

      you can say the same for the way that c++ handles strings.

  • @lollol-js8bj
    @lollol-js8bj 5 месяцев назад

    intro couldn’t be more real😭

  • @allNicksAlreadyTaken
    @allNicksAlreadyTaken 5 месяцев назад +2

    Multiple functions with different arguments is called function overload. Polymorphism is something else (either templates in the case of static polymorphism or virtual functions for dynamic polymorphism).

    • @sam_music555
      @sam_music555 27 дней назад +1

      If he misused those terms, then judging by the first seconds of the video too, he is definetly a junior developer.
      I know, because i am a junior developer myself :3

  • @bradley1995
    @bradley1995 5 месяцев назад +3

    16:34 😂😢 lmao

  • @XaFFaX
    @XaFFaX 5 месяцев назад +1

    18:35 This is not polymorphism but method overloading. Based on this, as well as in general this video it seems to me you have limited understanding of how software development looks and how one should work with legacy code. Here is my version for those who are wondering, since this video is not too accurate - first off with such large project you are usually not expected to know the whole codebase, because that would be pointless (you will not work with every part of the code anyway) and it would take months. The code is split into parts (modules) as it was mentioned in the beginning of the video. This is why in credits you will see sound developer, engine developer, AI developer, network developer etc. This is for games, when you have business applications the split is obviously different. Also for business applications for large projects the code may be split further among multiple microservices. This is just to give you an idea. When you start working on the code you will know beforehand which part of the code they want you to work on, be it sound, engine, AI or whatever else. When you know this, it is probably best to start off with tests. Tests will give you an idea on how stuff works, what does what, what are expected results and what are not, what are failure scenarios etc, etc. What to do if there are no tests you ask? I would quit and look for another job in that case. All other modules that interact with say sound module/library are blackboxes from your perspective. Which means you interact with them using APIs. You must know what to expect from them, and what those modules are expecting but are not expected to know how they work internally. This is assuming the code itself is properly maintained and properly designed. If it is a spaghetti code, that is not properly separated and data flows from one module to another without any structure or thought then you are in big trouble. Or more to the point - the project is. As you start understanding on what is going on in the tests, then usually it is good to start "poking around". Do some changes, add some code, think about stuff you need to do and see what the reaction from the code is. This way you can start going further and further until feeling comfortable. Just to be clear - for large projects there are no people who would know exactly what each line of code does at a glance. Some people who worked many years may know a more significant part of the code, but usually there are no people who would have touched 100% of the codebase. It is also good to consider how much a "free" engine gives in terms of development complexity. You get probably 60-70% of the code for free (vs say this Doom 3 source code). No need to implement and worry about Vulcan/OpenGL/D3D, sound, collisions, OS compatibility etc. you get all that for free, you "only" need to do game logic. This is why before "free" game engines there were basically no indie games.

    • @miles2142
      @miles2142 5 месяцев назад

      the whole video felt to me like c++ 101 (explaining what god damn operator overloading and templates are), 1/3 of the video is him searching for the main file and the other half is just looking at function declarations for the player class, lol

    • @barnabeusmaliniakus
      @barnabeusmaliniakus 12 дней назад

      this is a method overloading but also a type of polymorphism, compile-time/static polymorphism, so in the end he is not wrong

    • @XaFFaX
      @XaFFaX 11 дней назад

      @@barnabeusmaliniakus This is stretching it in my view, or at least using imprecise terms. In an at least para-educational video this should be made clear and/or explained IMO to avoid confusion. The terms you mentioned can be used, but are used rarely in my experience.

    • @barnabeusmaliniakus
      @barnabeusmaliniakus 11 дней назад +1

      @@XaFFaX yeap, you are right, it should be explained. Especially that in the beginning of the video, he builds an impression. That he is experienced and educated in software engineering. But it doesn't really seem like he is

  • @Puxi
    @Puxi 20 дней назад

    Bro do you know Küsh Baram Küsh? He was in Doom but not did mansioned in the credits.

  • @MopeyFand
    @MopeyFand 5 месяцев назад

    No help, no documentation, no comments, and no tests.
    Spaghetti codebase.
    Story of my life.

    • @rosen8757
      @rosen8757 21 день назад

      There is nothing in this video resembling spaghetti code

  • @pegasisomega6284
    @pegasisomega6284 5 месяцев назад

    My diet consist of pizza and soda excuse me dear sir

  • @__fireworks
    @__fireworks 6 месяцев назад +8

    Cpp is cool

    • @vast634
      @vast634 5 месяцев назад

      Maybe if John Carmack writes it. But there are enough source code abominations in C++.

  • @rahuldev2533
    @rahuldev2533 5 месяцев назад +1

    light up the candle for not using vim

  • @bludrunn3r560
    @bludrunn3r560 5 месяцев назад +1

    Please please please make video where You Reviewed the QUAKE 3 Source Code (maybe q1 and q2)

    • @ryonagana
      @ryonagana 5 месяцев назад +1

      quake 2 source code is slick.. tons of functions that create a real game

  • @barretthenderson5808
    @barretthenderson5808 Месяц назад

    Any doom game with bad optimization would be a disgrace to John Carmack

    • @Tariq10x
      @Tariq10x  Месяц назад

      Im currently reading „masters of doom“, and damn it’s such a good book

  • @CharlesVanNoland
    @CharlesVanNoland 5 месяцев назад

    Dang, I was hoping you were going to dive into the Doom3 BFG codebase instead of the old codebase with all of its crazy renderpaths for the disparate hardware of the day.

  • @spiffykat4049
    @spiffykat4049 День назад

    "What you also see here is Keyword "friend" "🤣

  • @mbarrio
    @mbarrio 5 месяцев назад

    Diablo 2, yep.
    Although I have a very healthy diet.

  • @hamesparde9888
    @hamesparde9888 5 месяцев назад +1

    You're not using Emacs! I'm not sure this is even worth watching! 😅

  • @davymachinegun5130
    @davymachinegun5130 3 месяца назад

    "Aye Dee Tech"
    Oh boy.

  • @GeorgeTsiros
    @GeorgeTsiros 5 месяцев назад +4

    please tell me you know the difference between "overloading" and "polymorphism"

    • @Anticitizen666
      @Anticitizen666 5 месяцев назад

      Yes I do. Hope this helps!

    • @GeorgeTsiros
      @GeorgeTsiros 5 месяцев назад

      @@Anticitizen666 oh thank god i can finally sleep

    • @DavidCreativeCoding
      @DavidCreativeCoding 5 месяцев назад

      I was looking for a comment like this as soon as I heard "polymorphism"

  • @CzMatt
    @CzMatt 5 месяцев назад

    Please I might have just missed that one information but why do they start every and each struct/class/enum and so on with "id"??

    • @kanataidarov
      @kanataidarov 5 месяцев назад

      Probably because it's idSoftware company - developer of the game

    • @CzMatt
      @CzMatt 5 месяцев назад

      @@kanataidarov ohh ok thanks

  • @RedSntDK
    @RedSntDK 5 месяцев назад +1

    Coffee and sausages, cause I'm doing keto 🌝

  • @James2210
    @James2210 2 месяца назад

    god damn the first 10 seconds stung

  • @damianjblack
    @damianjblack 29 дней назад

    Umm.. how did you know my diet??

  • @Sammie-r7d
    @Sammie-r7d 5 месяцев назад

    Now I see why they want 5 years experience

  • @crshrson
    @crshrson 5 месяцев назад +2

    OH WOW WTF... you nailed everything in the intro... thanks for nothing xD

  • @pju28
    @pju28 29 дней назад +1

    I would appreciate it if you would compile it to Linux! 😁

    • @Tariq10x
      @Tariq10x  29 дней назад

      I have already made a video about that: How To Compile the DOOM 3 Source Code Port for Linux and Windows(Step-by-Step Guide)
      ruclips.net/video/sHLHTiVJH4w/видео.html

  • @laudennn
    @laudennn 5 месяцев назад

    A+

  • @tugaric
    @tugaric 5 месяцев назад

    Finish eating my pizza and drinking my coffee, I see an interesting video and click it...
    Mofo...

  • @arunachalpradesh399
    @arunachalpradesh399 5 месяцев назад

    i guess its not orginal just reverse engineered, most script of games use Code obfuscation

  • @ablazedguy
    @ablazedguy Месяц назад

    It's Id tech, not ID tech.
    Id as in Hid, not ID as in Heidi

  • @liamvg
    @liamvg 3 месяца назад

    Noob here, why were you laughing so hard at the heartrate constants? Is that badly coded or something?

    • @Tariq10x
      @Tariq10x  3 месяца назад

      @@liamvg It’s a common (and good) practice to define commonly used variables like this. You don’t want everyone in the team defining their own version of heart rate variables. You make it constant so you don’t change it by mistake somewhere. I just laughed at the naming.

  • @greatgamegal
    @greatgamegal 5 месяцев назад

    I'm gonna flame you for thinking I'm gonna flame you for not using Vim instead of for not using Neovim.
    Edit: Oh, I forgot to do that. Get flamed.

  • @MofoMan2000
    @MofoMan2000 2 месяца назад

    Cool

  • @alexanderroodt5052
    @alexanderroodt5052 5 месяцев назад

    Video starts off by calling us all out