So I Reviewed the DOOM 3 Source Code..

Sdílet
Vložit
  • čas přidán 12. 09. 2024
  • Hello Everyone, in this video I make a (brief) review of the Doom 3 source code.
    In the real world often times you have to deal with legacy code. And then it is expected from you to quickly get an overview of the code base. Sometimes there is documentation and sometimes there is basically nothing, only code. I will explain how I usually approach this type of problem.
    If you like the content hit subscribe to support the channel.
    These are the Links I have mentioned in the video:
    (1) DOOM 3 Source Code Git
    github.com/id-...
    (2) The Website of the Guy who investigated the Doom3 architecture
    fabiensanglard...
    Song Credits:
    -------------------------------------------------------------------------------------------------------------------
    All songs Licensed under Creative Commons: By Attribution 4.0 License
    -------------------------------------------------------------------------------------------------------------------
    Composer/Producer: Johnathon M. Horner (Beat Mekanik) Song Title: Heavyweights (freemusicarchive.org)
    "Kool Kats" Kevin MacLeod (incompetech.com)
    "Spy Glass" Kevin MacLeod (incompetech.com)

Komentáře • 202

  • @Tariq10x
    @Tariq10x  Před 3 dny +1

    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.

  • @designator7402
    @designator7402 Před 28 dny +141

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

  • @Branchie
    @Branchie Před měsícem +121

    Oh man, that intro was too real.

  • @bruterasta
    @bruterasta Před 29 dny +62

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

  • @ExpensivePizza
    @ExpensivePizza Před 21 dnem +29

    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 Před 12 dny

      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 Před 12 dny

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

    • @delphicdescant
      @delphicdescant Před 12 dny

      @@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 Před 11 dny

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

    • @mleise8292
      @mleise8292 Před 8 dny

      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. 😅

  • @ruadeil_zabelin
    @ruadeil_zabelin Před 27 dny +52

    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 Před 22 dny +7

      "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.

    • @tiaanbasson9092
      @tiaanbasson9092 Před 22 dny

      The D3 source does have remnants from the older idtech engine, can notice some evolutions from Q2 to Q3 and most noticeable the RTCW code towards D3. However it's quite minimal.

    • @yaghiyahbrenner8902
      @yaghiyahbrenner8902 Před 22 dny +2

      @@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 Před 14 dny

      ​@@the_kovic womp womp

    • @delphicdescant
      @delphicdescant Před 12 dny +1

      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.

  • @emperorpalpatine6080
    @emperorpalpatine6080 Před měsícem +54

    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  Před měsícem +8

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

  • @peterjohnson9438
    @peterjohnson9438 Před 24 dny +17

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

  • @severgun
    @severgun Před 23 dny +14

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

    • @mattmurphy7030
      @mattmurphy7030 Před 19 dny

      Game programmers love to hate the STL

    • @Special1122
      @Special1122 Před 17 dny

      what is the reason behind that?

    • @mattmurphy7030
      @mattmurphy7030 Před 16 dny

      @@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 Před 14 dny +1

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

  • @Markus_included
    @Markus_included Před 24 dny +6

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

    • @Tariq10x
      @Tariq10x  Před 24 dny +3

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

    • @SMorales851
      @SMorales851 Před 24 dny +2

      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 Před 24 dny

      @@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 Před 24 dny

      @@Tariq10x You were right bro dw.

    • @Markus_included
      @Markus_included Před 24 dny

      @@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

  • @yaghiyahbrenner8902
    @yaghiyahbrenner8902 Před 22 dny +3

    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.

  • @sebastercats6123
    @sebastercats6123 Před 26 dny +9

    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 Před 25 dny +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 Před 22 dny

      @@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 Před 22 dny +2

      @@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 Před 12 dny +1

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

  • @julianelmasry9556
    @julianelmasry9556 Před měsícem +8

    Your channel is so underrated. This content is pure gold

    • @Tariq10x
      @Tariq10x  Před měsícem +2

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

  • @sadunozer2241
    @sadunozer2241 Před 24 dny +3

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

  • @winterboltgames
    @winterboltgames Před 23 dny +5

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

  • @sparshpriyadarshi
    @sparshpriyadarshi Před 22 dny +4

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

  • @MilanSantosi
    @MilanSantosi Před 23 dny +7

    probably not rust but some shader files ending in .rs

  • @phat80
    @phat80 Před 8 dny

    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.

  • @GottZ
    @GottZ Před 24 dny +2

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

  • @allNicksAlreadyTaken
    @allNicksAlreadyTaken Před 20 dny +1

    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).

  • @F00dstamp96
    @F00dstamp96 Před 17 dny +1

    My diet consist of Zyns and Ravioli

  • @anon_y_mousse
    @anon_y_mousse Před 15 dny

    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.

  • @CharlesVanNoland
    @CharlesVanNoland Před 24 dny +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.

  • @tiaanbasson9092
    @tiaanbasson9092 Před 22 dny +1

    I wish someone would replace the built in editor with QT or WxWidgets with improvements. DarkRadiant for the The Dark Mod project for example is a great example, it has real time connection to the game client which now updates the map in game while using the editor. The Dark Mod community really turned the D3 code base into something amazing. Maybe do a video on that code base as well.

  • @com0oan
    @com0oan Před 22 dny

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

  • @abc123evoturbobonker
    @abc123evoturbobonker Před 23 dny +2

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

  • @sergrojGrayFace
    @sergrojGrayFace Před 14 dny +1

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

  • @ffs55
    @ffs55 Před 15 dny

    killer opening line -- nailed it!!

  • @Malkovith2
    @Malkovith2 Před 18 dny

    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.

  • @roz1
    @roz1 Před 23 dny +2

    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

  • @WheatOnToast
    @WheatOnToast Před 21 dnem

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

  • @freezinfire
    @freezinfire Před 22 dny

    This was a good video, keep making videos!

  • @bryanjohnson4819
    @bryanjohnson4819 Před měsícem +2

    Glad to find this channel

    • @Tariq10x
      @Tariq10x  Před měsícem

      Glad to hear that bro ✌️

  • @TalicZealot
    @TalicZealot Před 25 dny +4

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

  • @Super.Whimsy
    @Super.Whimsy Před 20 dny

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

  • @TR-707
    @TR-707 Před 22 dny +1

    i hope you review Deutsche Bahn C++ next

  • @tempsanity
    @tempsanity Před 23 dny

    I subscribed immediately after the intro.

  • @DoodlesGaming
    @DoodlesGaming Před 18 dny

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

  • @StigDesign
    @StigDesign Před 23 dny

    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

  • @ColinBroderickMaths
    @ColinBroderickMaths Před 18 dny

    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 Před 16 dny

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

  • @pepe6666
    @pepe6666 Před 17 dny

    burn applied to me. subscribed

  • @LethiuxX
    @LethiuxX Před 17 dny

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

  • @ilYa1984
    @ilYa1984 Před 20 dny

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

  • @shamaelangel7212
    @shamaelangel7212 Před 20 dny

    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 ¡

  • @crshrson
    @crshrson Před 23 dny +2

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

  • @__fireworks
    @__fireworks Před měsícem +7

    Cpp is cool

    • @vast634
      @vast634 Před 21 dnem

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

  • @GhassanPL
    @GhassanPL Před 18 dny

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

  • @bowiemtl
    @bowiemtl Před 20 dny

    Ooh fuck the callout right of the bat, respect!

  • @Zyhru
    @Zyhru Před 20 dny

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

    • @Tariq10x
      @Tariq10x  Před 20 dny +1

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

  • @lollol-js8bj
    @lollol-js8bj Před 20 dny

    intro couldn’t be more real😭

  • @giornikitop5373
    @giornikitop5373 Před 16 dny

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

    • @jc-iz8lp
      @jc-iz8lp Před 12 dny

      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 Před 12 dny

      @@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 Před 12 dny

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

    • @giornikitop5373
      @giornikitop5373 Před 12 dny

      @@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.

  • @IAhmadGT
    @IAhmadGT Před 17 dny +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  Před 17 dny +1

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

    • @IAhmadGT
      @IAhmadGT Před 17 dny +1

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

  • @RedSntDK
    @RedSntDK Před 23 dny +1

    Coffee and sausages, cause I'm doing keto 🌝

  • @XaFFaX
    @XaFFaX Před 24 dny +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 Před 19 dny

      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

  • @ChannelSho
    @ChannelSho Před 20 dny

    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 Před 16 dny

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

  • @CharlesVanNoland
    @CharlesVanNoland Před 24 dny

    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.

  • @pegasisomega6284
    @pegasisomega6284 Před 17 dny

    My diet consist of pizza and soda excuse me dear sir

  • @tugaric
    @tugaric Před 19 dny

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

  • @mbarrio
    @mbarrio Před 22 dny

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

  • @sammyphala372
    @sammyphala372 Před 21 dnem

    Now I see why they want 5 years experience

  • @darkzeroprojects4245
    @darkzeroprojects4245 Před 21 dnem

    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.

  • @bradley1995
    @bradley1995 Před 22 dny

    16:34 😂😢 lmao

  • @laudennn
    @laudennn Před 18 dny

    A+

  • @bludrunn3r560
    @bludrunn3r560 Před 24 dny +1

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

    • @ryonagana
      @ryonagana Před 24 dny +1

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

  • @telengardforever7783
    @telengardforever7783 Před 18 dny

    Wait, there's no Assembly or machine code?! In order to get those timings, you can only do that with Assembly code.

  • @GeorgeTsiros
    @GeorgeTsiros Před 26 dny +4

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

    • @Stabby666
      @Stabby666 Před 24 dny

      Yes I do. Hope this helps!

    • @GeorgeTsiros
      @GeorgeTsiros Před 24 dny

      @@Stabby666 oh thank god i can finally sleep

    • @DavidCreativeCoding
      @DavidCreativeCoding Před 21 dnem

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

  • @CzMatt
    @CzMatt Před 23 dny

    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 Před 23 dny

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

    • @CzMatt
      @CzMatt Před 22 dny

      @@kanataidarov ohh ok thanks

  • @rahuldev2533
    @rahuldev2533 Před 13 dny

    light up the candle for not using vim

  • @Nomadnetic
    @Nomadnetic Před 12 dny

    How dare you call me out lol.

  • @greatgamegal
    @greatgamegal Před 23 dny

    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.

  • @Antagon666
    @Antagon666 Před měsícem

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

    • @Tariq10x
      @Tariq10x  Před měsícem +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.

    • @Antagon666
      @Antagon666 Před měsícem

      @@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.

    • @Stabby666
      @Stabby666 Před 24 dny +1

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

  • @alexanderroodt5052
    @alexanderroodt5052 Před 24 dny

    Video starts off by calling us all out

  • @leoschielt721
    @leoschielt721 Před 16 dny +1

    11:00 Anyone else screaming at the Screen "why are you scrolling?!" - In IntelliJ i would just do "Structure" (Ctrl-F12) --> type "main" and BAM, you're there. Use the IDE, it's not notepad....

  • @arunachalpradesh399
    @arunachalpradesh399 Před 18 dny

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

  • @hatsuneadc
    @hatsuneadc Před měsícem

    Cool video! One suggestion though: try to compile the codebase, change something arbitrary and see the result next time. Just for better viewing experience

    • @Stabby666
      @Stabby666 Před 24 dny

      I think it takes quite a lot of work to actually make this compile, based on the huge amount of external scripts and dependencies required. It would be interesting to see just how much work is involved though.

  • @guilherme5094
    @guilherme5094 Před 22 dny

    👍!

  • @hamesparde9888
    @hamesparde9888 Před 12 dny

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

  • @user-yq3tf8mx1x
    @user-yq3tf8mx1x Před 24 dny +1

    Inverse square root czcams.com/video/p8u_k2LIZyo/video.html

  • @dsptchr
    @dsptchr Před 21 dnem

    Diablo 2 was great

  • @diechort
    @diechort Před 21 dnem

    How do you know so much about me?

  • @j4yd34d5
    @j4yd34d5 Před 24 dny

    This video taught me that most open source code bases are an undocumented spaghetti buffet that's unreadable by anybody but the maintainer. Doom 3 source code is sick though! 😄

    • @blarghblargh
      @blarghblargh Před 23 dny +1

      "readability" is a function of the person doing the reading. if a person spends time reading and modifying mountains of unfamiliar code, their metrics of readability will change. at the very least, having strong familiarity with the problem domain (i.e. writing multiple shipping game engines) will improve the person's understanding of the code. extensive familiarity with the specific language also helps.
      people like to pretend these things matter a lot less, and that there's a generic set of readability improvements you can make, and that they accomplish most of the readability benefits. but a lot of those axioms are just advocating everyone conform to a specific style. that style hasn't been proven to actually accomplish anything. it's just been sold hard.
      immersing onesself in a specific style does help. but that's not due to inherent aspects of the style being better. it's just due to familiarity.
      "clean code" got massively oversold :D

  • @elgeempire493
    @elgeempire493 Před 13 dny

    Vs code is better!!

  • @BudgiePanic
    @BudgiePanic Před 23 dny

    The game should have an API because the game uses a client server architecture, right?

  • @dawidbujak
    @dawidbujak Před 22 dny +4

    Hi, are you even qualified to review doom 3 source code?

    • @Quarantineism
      @Quarantineism Před 22 dny +5

      Lol. No one has to be really. You can always learn something by looking at stuff, even if there are more "mature" or professional ways to do it. I think the intention of the video is entertainment, not education.

    • @liketheninja8658
      @liketheninja8658 Před 22 dny +5

      Are you qualified to comment on this video?

    • @RussTeeTrombone
      @RussTeeTrombone Před 12 dny +1

      I am.
      I got a masters degree in “DOOM Studies” with a concentration in DOOM3

  • @pavelyankouski4913
    @pavelyankouski4913 Před 21 dnem

    Devs may be using custom ai for such things as "magic numbers" or other stuff as well, for example games like "Heroes 3" and its "map generator" definitely have some hidden ai infrastructure. They could be using small model of architecture and then they enlarge it, small models are common in prototyping. I've seen their first prototypes and it was another game, final game code is unpredictable, everything depends from optimization. I didn't created anything superficial yet, but DOOM3 game is - meh

  • @SnakeEngine
    @SnakeEngine Před měsícem +8

    Pretty bad code architecture, but it does the job, I guess.

    • @ΑνώνυμοςΧρήστης-ρ9ζ
      @ΑνώνυμοςΧρήστης-ρ9ζ Před měsícem +5

      why is it bad?

    • @SnakeEngine
      @SnakeEngine Před měsícem +6

      @@ΑνώνυμοςΧρήστης-ρ9ζ Architecture is very specific, and too rigid to extend well. No wonder they stick to simplistic shooters. I guess something more interesting and complex would be beyond the scope with that code.

    • @Tariq10x
      @Tariq10x  Před měsícem +6

      I agree, it would be really painful creating something that’s not a fps with this code.

    • @nstch-root-a
      @nstch-root-a Před 25 dny +9

      Depends on the perspective, Id software makes shooters, so building a tool that can do shooter + ? isn't a smart decision. Calling it bad here is the same as calling a sportscar bad for it's poor cross country performance

    • @SnakeEngine
      @SnakeEngine Před 25 dny +4

      @@nstch-root-a Wrong analogy. I am critizining the machinery that is only able to produce one type of sportscars, and not the best ones either.

  • @nzeu725
    @nzeu725 Před 20 dny

    no vim grrrrr me vim user angwy

  • @melih2496
    @melih2496 Před 13 dny

    bro inspects doom 3 source code without knowing who john carmack is