Programming a first person shooter from scratch like it's 1995

แชร์
ฝัง
  • เผยแพร่เมื่อ 29 ม.ค. 2025

ความคิดเห็น • 1.3K

  • @btarg1
    @btarg1 ปีที่แล้ว +4636

    I find it very interesting when developers challenge themselves by not using existing engines, frameworks etc, this looks super difficult so props to you!

    • @retardsgaminggroup
      @retardsgaminggroup ปีที่แล้ว +28

      The only game I can think of that uses its own engine is HROT which uses its own pascal engine

    • @qwke
      @qwke ปีที่แล้ว +32

      SDL.

    • @Drillgon
      @Drillgon ปีที่แล้ว +22

      @@monad_tcp Doing a basic TLS implementation actually isn't that bad, mostly just a lot of learning about cryptography and reading RFCs and stuff (and I imagine you're no stranger to that). I'm doing a similar "full stack" project right now. I'm more or less done with TLS 1.3, but I still need to do an ethernet driver and TCP.

    • @lanchanoinguyen2914
      @lanchanoinguyen2914 ปีที่แล้ว +14

      I'm developing my own game engine in my channel.

    • @theairaccumulator7144
      @theairaccumulator7144 ปีที่แล้ว +14

      @@monad_tcp I wouldn't write anything
      like that myself to be honest, waaay too big of an opportunity for critical vulnerabilities when you're making something that is touching the internet at the lowest level.

  • @darkriff777
    @darkriff777 ปีที่แล้ว +457

    The biggest jaw dropper in 1990's programming is the use of mathematical tables in memory and other tricks to cheat calculate results rather than relying on C or C++ math libs to do calculations in order to optimize for speed. Also, they were limited to using very little memory. Lastly, the display functions were mostly written in assembly to also optimize for speed, and that was a bitch to do. People like Ken Silverman and John Carmack were absolute beasts with their respective engines.

    • @eustab.anas-mann9510
      @eustab.anas-mann9510 11 หลายเดือนก่อน +38

      Rollercoaster Tycoon was written entirely in Assembly.

    • @ArneChristianRosenfeldt
      @ArneChristianRosenfeldt 7 หลายเดือนก่อน +8

      And the most jaw dropping thing for me is that people don’t know that you can rotate a vector using a matrix. And that quake used Taylor series to re-normalize said vector. And that you don’t have to waste memory or cache on this even on a 386 without 387.

    • @isaacyukon5869
      @isaacyukon5869 7 หลายเดือนก่อน +2

      But can people still write code like alllllll this (including the replies) without an IDE that highlights, suggests, auto-fills, and catches syntax errors like it really is 1995 like the title says.............. No, I don't think they can.

    • @ArneChristianRosenfeldt
      @ArneChristianRosenfeldt 7 หลายเดือนก่อน

      @@isaacyukon5869 at work we have a crappy system without IDE. Eclipse should work, but I could not get the matching versions of eclipse and plug-in and windows..

    • @timerunner16
      @timerunner16 6 หลายเดือนก่อน +19

      @@isaacyukon5869 I mean, yeah, people can. They just don't in a majority of cases, because it doesn't make sense to. Self imposed limitations as challenges, like this one here to write an engine that uses similar techniques to those used in 1995 due to technical limitations, are done for fun; whereas most people wouldn't consider being forced to look through a textbook or re-read through large portions of their codebase instead of having the IDE autofill 'fun'.

  • @loleq2137
    @loleq2137 ปีที่แล้ว +1189

    What a mind-boggling project. This man is a powerful programmer. I aspire to someday come close to his level of speaking with computers.

    • @gilfhunter42069
      @gilfhunter42069 ปีที่แล้ว +119

      You have to consider that he definitely did his fair bit of research on how to do it. Back then, these 2.5D/3D games were groundbreaking for a reason. The maker of this video didn't invent the algorithm, he is just building what other people did before him and that information is widely obtainable through the internet. Not to play down what he did, it's still amazing work, but that doesn't mean he is a god programmer.

    • @shubhamwr
      @shubhamwr ปีที่แล้ว +2

      For me, there is comment of guy just below your comment who states that some part of this video looks familiar to him because it was something he already did. Thankfully name of that guy is mentioned in description and he was thankful for that.

    • @Corleone007
      @Corleone007 ปีที่แล้ว

      Yep 3D software /games .. the most advanced programming :)

    • @landonh123
      @landonh123 ปีที่แล้ว +22

      I see this project as less of a display of a programming prowess and more of a display of math prowess.

    • @anon-fz2bo
      @anon-fz2bo ปีที่แล้ว

      Yeah same

  • @Rabbit-o-witz
    @Rabbit-o-witz ปีที่แล้ว +1687

    I started to learn programming 3 months ago. I cannot imagine myself writing a single line of whatever black magic fuckery you did in this video. Seriously, to me, people that can come up with stuff like these are geniuses

    • @tealtrim9747
      @tealtrim9747 ปีที่แล้ว +211

      I'm 2 years into a comp sci degree and honestly same. His code looks like math equations instead of programming to me. Love watching him do this amazing stuff though.

    • @isuckatthisgame
      @isuckatthisgame ปีที่แล้ว +249

      Now think of what kind of geniuses were those programmers in the 90s who were first making 3D games and writing frameworks for it.

    • @Corleone007
      @Corleone007 ปีที่แล้ว +65

      making 3D games or 3D software is the most difficult thing to code. It's the highest level of programming. Also at some point you start using OpenGL or DirectX functions.

    • @inlandish
      @inlandish ปีที่แล้ว +72

      ​​@@tealtrim9747 Once you get into 3D programming and low level, everything is just math equations... Some of the videos I have made on 3D stuff just needs hours of explanation. If you want I can hook you up with an explanation I made of basic raytracing.

    • @tealtrim9747
      @tealtrim9747 ปีที่แล้ว +25

      @@inlandish I am not very good at math, I should probably just stay away from the more mathy areas of programming. I appreciate your offer though, I just don't want to waste your time because I'd be too dumb to understand or properly utilize what you teach me.

  • @That_0ne_Dev
    @That_0ne_Dev ปีที่แล้ว +3027

    This man is a coding monster

    • @jimsmith3715
      @jimsmith3715 ปีที่แล้ว +10

      legit

    • @chithiradiasseneviratne3562
      @chithiradiasseneviratne3562 ปีที่แล้ว +121

      @@Danuxsy Huh "dOiNg SoMeThInG UseFuL lIkE Ai RESeAcrch", AI research is super different then doing stuff with low-level system languages (like coding in C and C++) and bare bones hardware (Making my own GPU ect)

    • @Squeph
      @Squeph ปีที่แล้ว +148

      @@Danuxsy Because people have their own interests and aren't purely motivated by what you deem to be the best use of time.

    • @rx7cpp
      @rx7cpp ปีที่แล้ว +69

      @@Danuxsy who tf said that we should all be focusing on birthing AI? the knowledge he has has nothing to do with AI, the guy is coding his own engine from scratch. but of course, it's clear that you don't have much experience in the area

    • @LineOfThy
      @LineOfThy ปีที่แล้ว +22

      @@Danuxsy because not everything has to impact the world to justify its existence

  • @Bisqwit
    @Bisqwit ปีที่แล้ว +351

    Thanks for the mention (in the video description!) Some of this looks quite familiar. Especially the part from 7:28 to 8:06.

    • @jdh
      @jdh  ปีที่แล้ว +116

      hey! I've been a fan of yours I think since before that video was originally uploaded :) your code was a fantastic reference and obviously the tutorial visuals stuck in my head.
      IIRC my approach differs in that I ended up projecting walls according to a conversion of their angle relative to the camera (basically -HFOV/2..+HFOV/2 mapped onto 0..SCREEN_WIDTH) whereas I don't think I ever fully understood the method your code uses - it was a good reference in the start but I think the only way I could fully understand things was working out the math myself!

    • @Davi_Dash
      @Davi_Dash ปีที่แล้ว +44

      When two masters colide.

    • @undefBehav
      @undefBehav ปีที่แล้ว +14

      ​@@jdh IIRC, Biqswit uses the regular old z-divide to achieve 3-D perspective. Your approach and his work effectively the same way and are based on the same principle, the triangle congruency. Doom uses a similar technique to yours, to "project" the view-space angles of the wall endpoints to screen-space x-coordinates--albeit with the help of a pre-calculated lookup table for trig functions. Anyways, great content! Loving the aesthetics of your gfx engine.

  • @BLAZE_GLITCH
    @BLAZE_GLITCH ปีที่แล้ว +863

    It's really quite interesting to see you come up with all these fun challenges
    Especially when nowadays literally every game dev chooses to use a game engine, making a game from scratch is a topic that no one really talks about

    • @bluesillybeard
      @bluesillybeard ปีที่แล้ว +108

      You might be surprised by the abundance of games that roll their own engine. It's still a pretty common practice for a developer to make their own engine from scratch, especially when they have particular requirements like performance or rendering techniques.
      That being said, most custom engines are just your basic old 3D or 2D renderer, what jdh makes is on a whole level of its own.

    • @BLAZE_GLITCH
      @BLAZE_GLITCH ปีที่แล้ว +34

      @@bluesillybeard I am aware that many games are made with a custom engine
      It's just that people don't talk about them a lot and there's not many devlogs about them
      Then there's jdh of course...

    • @Kabodanki
      @Kabodanki ปีที่แล้ว +33

      @@BLAZE_GLITCH there's thinmatrix as well. Major game devs won't show off the internal working of their engine, that's trade secrets, tech demo are also rare.

    • @thezipcreator
      @thezipcreator ปีที่แล้ว +1

      @@Kabodanki doesn't thinmatrix just use unity tho?

    • @The_Codemaster144k
      @The_Codemaster144k ปีที่แล้ว +5

      ​@@thezipcreator no. He either uses his own game framework or lwjgl

  • @btarg1
    @btarg1 ปีที่แล้ว +510

    A huge flex would be making this able to build for 486 platforms like the original DOOM, so you could play on period-accurate hardware!

    • @jdh
      @jdh  ปีที่แล้ว +255

      that's part of the plan! I had originally even used fixed point Q16.16 math for the project just so that it could run on things without an FPU, but it got too tiresome when it started expanding. when the final game is done though I do want to backport (if you can even call it a "backport") it to MS-DOS!

    • @plasma5545
      @plasma5545 ปีที่แล้ว +13

      i initially thought he was gonna make it on dos with 486 hardware 😢

    • @raul12300
      @raul12300 ปีที่แล้ว +16

      @@jdh I call that a demake

    • @infotration2225
      @infotration2225 ปีที่แล้ว

      @@jdh where's full game i want to play it

    • @majorramsey3k
      @majorramsey3k ปีที่แล้ว

      Doom actually ran on a 386

  • @Edward135i
    @Edward135i ปีที่แล้ว +137

    "Programming a first person shooter from scratch like it's 1995"
    in 1995 Rare was creating Goldeneye for the N64 on SGI workstations, not a kind of 3d doom clone, that is insane to think about how quickly computer technology was moving at the time.

    • @TravisPastramee
      @TravisPastramee ปีที่แล้ว +13

      They were using SGI workstations, but the programming of the game engine was still mostly done in C and a bit in MIPS for optimization. SGI workstations came with their own C compilers on them, and the GCC was also installable.

    • @chrisalex82
      @chrisalex82 หลายเดือนก่อน +1

      and it still is, way faster

  • @jamesonahill
    @jamesonahill ปีที่แล้ว +94

    As soon as you got the lighting and pallettization in I instantly grew jealous that I will likely never make something that nails this aesthetic so well in my lifetime

    • @timallanwheeler
      @timallanwheeler ปีที่แล้ว +20

      I think he’s got sample code and other support material. He mentions it at the end of the video. Your dream is within reach!

    • @ScienceDiscoverer
      @ScienceDiscoverer 5 หลายเดือนก่อน +1

      @@timallanwheeler The dream is to create if youself from scratch, not copy paste from some lucker on youtube that got popular due to algorithm.

  • @matthewlevenstein
    @matthewlevenstein ปีที่แล้ว +68

    Incredible work. Here’s a tip you didn’t ask for. To get that smooth stepping texture mapping look, you’ll have to subtexel correct each vertical scanline. Just passing this along because it took me a while to get right

  • @TriVoxel
    @TriVoxel ปีที่แล้ว +35

    I actually think the ray traced lighting gave your engine a really unique look! What an awesome project!

  • @Stingpie
    @Stingpie ปีที่แล้ว +64

    What a coincidence! Just a couple weeks ago, I started on my own doom-style engine using Bisqwit as a reference. For my engine though, I went entirely with vector based graphics. I also, in accordance to 90's standards, only used Borland graphics interface. I definitely have not made as much progress as you, but I think we're trying to reach different goals. Regardless, great job!

    • @nickyp1435
      @nickyp1435 8 หลายเดือนก่อน +2

      You’re a couple weeks in, watching a video on a complete project and comparing your progression? different paths

    • @Stingpie
      @Stingpie 8 หลายเดือนก่อน

      @@nickyp1435 ok, buddy.

  • @ContraHacker1337
    @ContraHacker1337 ปีที่แล้ว +14

    1:47 I never gave much thought to software rendering, but that caught me off-guard! A buffer of pixels is all it boils down to. Incredible!

  • @jeremym5331
    @jeremym5331 ปีที่แล้ว +33

    this is absolutely mind blowing i hope to be half the dev you are one day man

  • @dewaard3301
    @dewaard3301 ปีที่แล้ว +39

    See, this is why I love being able to code. You don't need anything except a creative mind, an internet connection, and a laptop to build entire worlds.

    • @tonig2757
      @tonig2757 ปีที่แล้ว +11

      You kinda need one more thing though: Time.

    • @bukeschmenzell
      @bukeschmenzell ปีที่แล้ว

      @@tonig2757and lots and lots of patience

    • @Todomo
      @Todomo ปีที่แล้ว +2

      you don’t even necessarily need internet if you do everything locally

    • @dewaard3301
      @dewaard3301 ปีที่แล้ว +6

      @@Todomo I'm a software dev, which means that at least half my time is figuring out how I should do the things I want to do on the internet.

    • @alien3200
      @alien3200 ปีที่แล้ว

      Internet is the only thing I don't have 😂😂

  • @devitosolucoes7534
    @devitosolucoes7534 ปีที่แล้ว +22

    You are a monster, man, really.. I was looking for that kind of content for a long time.. a real programmer working on a doom coding the old fashion way... Of course I learned something like 1% of what you said but I really like those kind of videos where people show the fundamentals. Thank you

  • @arial_01
    @arial_01 ปีที่แล้ว +73

    More jdh! Honestly, I am sad to see the robot botanist go, but its nice that you can move on to some other projects, and continue to learn! Any chance we could have the Alpha of the robot game to play around with?

  • @moretti740
    @moretti740 ปีที่แล้ว +11

    That's awesome. I'm doing something similar in Rust for a web browser. I also had the same issue with fixed point math and switched back to native fp. Best decision ever. Rust basically walks me through the bugs to fix them before even running it. I should make a video. my render objective is to show how you can make an entire render using trigonometry knowledge from school. I'm using Permadi's raycasting tutorial and the Wolfenstein engine Black Book as a base. I run it on WASM in the browser. Keep it up!

  • @Lim95
    @Lim95 ปีที่แล้ว +22

    babe wake up new jdh upload

  • @opfez
    @opfez ปีที่แล้ว +13

    to make the movement more smooth you should make the direction keys accelerate the player rather than set the velocity to a fixed amount (like it looks like you're doing). it really adds a lot to the feel of moving around!
    anyways, nice project, i look forward to seeing it develop!~

  • @superduper6090
    @superduper6090 ปีที่แล้ว +4

    This is very impressive, I couldnt imagine trying to do all of this without a graphics api like DX, opengl or vulkan. Very cool, thanks for this awesome video

  • @Grimm-hb7ek
    @Grimm-hb7ek ปีที่แล้ว +19

    The length of this video was criminally short I need more jdh😂🧟‍♂️

  • @jakehuang3545
    @jakehuang3545 ปีที่แล้ว +558

    waking up to a new jdh video slaps harder than will smith 😁

    • @silbdanny440
      @silbdanny440 ปีที่แล้ว +5

      Thats true

    • @Ziedmac
      @Ziedmac ปีที่แล้ว +25

      It feels like that happened 3000 years ago but it really didnt

    • @kattihatt
      @kattihatt ปีที่แล้ว

      Too soon.

    • @MP-tz2yn
      @MP-tz2yn ปีที่แล้ว

      Stfu dead meme

    • @SqualidsargeStudios
      @SqualidsargeStudios ปีที่แล้ว

      Smith was still in the right, that guy that made the joke is just a bland asshole

  • @abuk95
    @abuk95 ปีที่แล้ว +7

    People are saying "don't program your own game engine, they already exist, it is waste of time" and then somebody actually creates one and makes a YT video about and everybody is like "holy shit, that is amazing, you are so good!"
    Nice work, btw!

    • @attilavs2
      @attilavs2 ปีที่แล้ว

      For most intents, a off the shelf engine like unity, unreal or godot works just fine. Btw i am watching this as i was thinking about doing my own engine (for calculator games so that's why)

    • @abuk95
      @abuk95 ปีที่แล้ว

      @@attilavs2 Yeah, for a production game a real game engine is a good choice. However, making your own engine for *learning experience*, or for obscure platforms like calculators :D, is what I want to do as well.

    • @attilavs2
      @attilavs2 ปีที่แล้ว

      @@abuk95 Not only production games, if you have like a creative idea and don't want to spend too much time on the codey bit, or want fancy graphics, or even just limited by time. Btw if you want to try calculators, it's pretty cool with the latest ones you can run basically every 2d game and stuff like doom ect... Basically a 1993 computer in your pocket, and on which you can have almost full acces to the hardware, especially on Casios

    • @abuk95
      @abuk95 ปีที่แล้ว

      @@attilavs2 Cool! Could be an interesting project to try out.

  • @DipsAndPushups
    @DipsAndPushups ปีที่แล้ว +7

    When I watch jdh's videos I always end up wishing I was as good of a programmer as this guy is. This guy can just make whatever he wants. This guy is on a level that most non programmers think you can get after you study programming for a couple of months.

    • @nighteule
      @nighteule ปีที่แล้ว

      You too can get there if you're motivated and have a few years

    • @K3rhos
      @K3rhos ปีที่แล้ว

      It's not really about programming skills, but mathematics skills in this case, I'm programming using C++ for years now, but when it comes to reinvent the wheel like this guy did, I'm pretty sure I will get quickly bored and just throw away the project in the trash can lol !

    • @DipsAndPushups
      @DipsAndPushups ปีที่แล้ว +2

      @@K3rhos Linear algebra wasn't hard for me in university. I will definitely try making 3D games in OpenGL but I highly doubt that I will be as successful as this guy. Because he seems to possess big amount of knowledge of so many different topics. He built his own PC ffs. He built his own OS to run Tetris. He made Minecraft from scratch in a couple of days. I can't make anything serious in a couple of days without introducing bugs.

  • @cubeflinger
    @cubeflinger ปีที่แล้ว +10

    Just stumbled on your channel and as a budding game developer I can honestly tell you I do not have the patience or the maths to create an engine from scratch. This was a good watch.

  • @julkiewitz
    @julkiewitz ปีที่แล้ว +3

    Well the live editing experience is way ahead of what is available in the mainstream engines so kudos. They could learn a thing or two from you

  • @erc0re526
    @erc0re526 ปีที่แล้ว +33

    Damn man this is so cool, I'm so jealous. I went into programming, starting with C, to one day be able to code games like Doom, Half Life and the likes, and the furthest I ever went was a Wolf3D clone. I suck at math and I wish I could understand 10% of what happens in a portal-based rendering engine like you wrote. That's awesome! And I'm so glad you used plain old C.

    • @jdh
      @jdh  ปีที่แล้ว +27

      it actually isn't super complicated! I strongly recommend Bisqwit's video (th-cam.com/video/HQYsFshbkYw/w-d-xo.html) and Fabien Sanglard's "DOOM Engine Black Book" (fabiensanglard.net/gebbdoom/) - they make it very easy to understand

    • @erc0re526
      @erc0re526 ปีที่แล้ว +14

      @@jdh Yes I know Bisqwit's videos quite well and I have both Black Engine books! I think my issue is more of a motivational one. You're inspiring tho!

    • @supebioshock
      @supebioshock ปีที่แล้ว +4

      The doom black book is great but it’s too high level and doesn’t go into details (at least with topics like how it does texture mapping)
      So you are left with a lot of questions unanswered

    • @supebioshock
      @supebioshock ปีที่แล้ว +3

      It will provide a formula but I had to actually look at the doom source code to see certain things related to texture mapping but I still get quite confused. It’s just drawing a vertical column but I haven’t been able to wrap my mind around how it decides what texture columns to draw. But then there’s a whole ordeal with texture pegging which I don’t understand either

  • @zCalico
    @zCalico 11 หลายเดือนก่อน +3

    2:20 My “just learning basic C# for the first time” brain practically short circuited seeing you write raycast from scratch that quick 😭

    • @cirkulx
      @cirkulx 4 หลายเดือนก่อน

      i made a 2d shooter in sdl and JUST C in a few days fabricating the entire engine to the final version in

    • @zCalico
      @zCalico 4 หลายเดือนก่อน

      @@cirkulx I wish I had the experience to do so, I’m still learning the basics of C# with Godot and it’s up and down to say the least lol

    • @Generic_Handle4573
      @Generic_Handle4573 3 หลายเดือนก่อน

      Man I’m trynna do that in Python and my lack of C knowledge just made my brain not

  • @carterisonline
    @carterisonline ปีที่แล้ว +79

    Haven't seen the code yet, but based on your explanation at 13:09, there is a chance that the player could clip through a vertex defined on an adjacent "block" if they're going fast enough. A quick fix would be to check every block's collision that the movement ray intersects, with a ray-intersection function similar to the one used in the Wolfenstein prototype.
    Looking forward to Spinach-Cat-Banana-Game getting its well-deserved release!

    • @nikkiofthevalley
      @nikkiofthevalley ปีที่แล้ว +1

      Or you could just cap the player's speed.

    • @carterisonline
      @carterisonline ปีที่แล้ว +17

      @@nikkiofthevalley Unfortunately it's not that simple. Let's say a vertical wall spans the height of an adjacent block about 1mm left of the right border of its block. The player could be **very** close to this vertex, but still stay outside of its block because it hasn't crossed the block's border yet. If the player is 1mm right of the border, and the wall is 1mm left, then if the player moves >2mm left in one frame (not very fast at all), it'll clip. That's why we need to check whether the movement ray intersects with any other blocks.

    • @jdh
      @jdh  ปีที่แล้ว +40

      good catch! I didn’t mention in the video, but the code already does that - it uses the exact same DDA “line drawing”/graph traversal algorithm as the wolfenstein demo just like you mentioned!

    • @carterisonline
      @carterisonline ปีที่แล้ว +21

      @@jdh Great! I mention this because I was working on a similar engine (in ES3 javascript 🤮) and the player kept clipping through borders of where the BSP was set up. Took me about a week to figure out, and by that point I had lost interest. Love your content and your dedication to making your own game engines.

    • @dewaard3301
      @dewaard3301 ปีที่แล้ว +2

      You sharpshooting me, boy? - jdh

  • @DwipMakwana
    @DwipMakwana 4 หลายเดือนก่อน +1

    The fact that you made this from scratch using almost no help from the libraries, BRAVO MAN!! I hope I can be of this level one day =)

  • @jsierra88
    @jsierra88 ปีที่แล้ว +4

    At the moment you try to build some real-time graphic stuff up from scratch by yourself you can notice this channel is finest jewelry.

  • @kenan2386
    @kenan2386 ปีที่แล้ว +4

    I love these kinds of videos, and also the mention of another youtuber I watch "Bisqwit". Pretty cool time rewind vid

  • @starlightnixie
    @starlightnixie ปีที่แล้ว +5

    Thank you. This video appeared at exactly the time in my life that I needed it most. That being, the time I've started thinking a lot about how 2.5D shooters work under the hood. It's something I personally associate more with Dark Forces than with Doom, but it's got that nostalgic smell either way.

    • @BoneMareOh
      @BoneMareOh ปีที่แล้ว

      the term 2.5d makes me want to die

    • @BoneMareOh
      @BoneMareOh ปีที่แล้ว

      @@iambored1528 so then explain to me then how the doom source code which is publicly available is actually not 3d and explain how it is 2 dimensions and a half since clearly you think public source code that you can read and compile for yourself, isnt 3d.

    • @BoneMareOh
      @BoneMareOh ปีที่แล้ว

      ​@@iambored1528 That is completely false and can be proven by looking in the source code. So now I know that you have no clue what you are talking about and are making up stuff that goes against widely available facts. plus you can't have floor and ceiling height in ray casting.
      Doom uses binary space partitioning, btw.

    • @BoneMareOh
      @BoneMareOh ปีที่แล้ว

      @@iambored1528 No, i am saying that it is open source meaning you can read the code yourself and see that it is 3d. but you are instead to lazy to do that and are now lying in a youtube comment section

    • @BoneMareOh
      @BoneMareOh ปีที่แล้ว

      @@iambored1528 height would be another dimension, making three dimensions. you are literally proving yourself wrong but refuse to see it. and again you refuse to look at the doom source code which proves you wrong. why are you intent on lying to people?

  • @some1and297
    @some1and297 ปีที่แล้ว +2

    Sometime I see your video's pop up and feel nothing but sympathy, like this is so much work.

    • @Brahvim
      @Brahvim ปีที่แล้ว

      Me too?

  • @quincyames2014
    @quincyames2014 ปีที่แล้ว +6

    dang i have been having trouble making a 2d game in c++ recently and you make 3d look easy

  • @osca1882
    @osca1882 ปีที่แล้ว +1

    As a long time fan of the channel and seeing as I’m learning C++ for my University degree, including SDL, this video was very interesting to me! Keep up the good work!

  • @lordplebius483
    @lordplebius483 ปีที่แล้ว +19

    Whats crazy is that the coding shots aren't even sped up.

    • @nhifgp
      @nhifgp 5 หลายเดือนก่อน +1

      Of course they are lmfao

    • @Atomz09
      @Atomz09 2 หลายเดือนก่อน

      @@nhifgpslow poke

    • @4F6D
      @4F6D 5 วันที่ผ่านมา

      @@nhifgp Can't even understand a simple joke huh?

  • @granie300
    @granie300 ปีที่แล้ว +2

    Nice to see you upload again

  • @ndotl
    @ndotl ปีที่แล้ว +4

    I like it. After I learn the basics, I will study this one as I ramp up my learning.

  • @erik-fisher
    @erik-fisher ปีที่แล้ว +7

    The ray-traced global illumination could go in as well. It would give your game that uniqueness! Great video! 😊

  • @najibramadan2555
    @najibramadan2555 ปีที่แล้ว +12

    would love to see that 3 hours video, if you decide to release it

  • @3DSage
    @3DSage ปีที่แล้ว +1

    I love it! Great explanation :)

    • @atom1kcreeper605
      @atom1kcreeper605 5 หลายเดือนก่อน

      Im surprised this doesn't have 3000 like or something

  • @BareMetalProgramming
    @BareMetalProgramming ปีที่แล้ว +5

    You can also fairly easily add mirrored surfaces. Just make sure you don't keep reflecting off of nested surfaces.

  • @GTGTRIK
    @GTGTRIK ปีที่แล้ว +1

    The collision sliding is worthy of showing off.
    I kinda got stuck on that when I did my own wolf-style engine for fun.

  • @Christoph603
    @Christoph603 ปีที่แล้ว +3

    Awesome job and as always well presented - thank you!

  • @shadoninja
    @shadoninja ปีที่แล้ว +1

    This is the best "let's code" style video I have ever seen. Instant sub

  • @mayank4156
    @mayank4156 ปีที่แล้ว +6

    People who make a game from scratch deserve all the respect in the world. Good job!

  • @HeavyLiftSkilling
    @HeavyLiftSkilling 10 หลายเดือนก่อน +1

    I found myself exhausted after imagining how much work has been condensed into a 16 minute video. Insane.

  • @AstroSamDev
    @AstroSamDev ปีที่แล้ว +12

    You should implement this engine for your 8-bit CPU 😎, or even a 6502 computer, then you'll even be playing on similar hardware.
    But honestly, great video, and very interesting project. Usually people only make the original Wolfenstein style raycast engines, but not the DOOM one, so this was pretty informative and fun to watch.

    • @thezipcreator
      @thezipcreator ปีที่แล้ว +3

      a 6502 would have to be overclocked to oblivion to implement this (and you'd also have to write a full floating point emulator). I think you meant i386?

    • @AstroSamDev
      @AstroSamDev ปีที่แล้ว

      @@thezipcreator True, but I think I've seen demos of doom/wolfenstein like games running on the Commodore 64 and other 6502 hardware? (Though I may be wrong). I was just referring to that, as it was much more similar to the CPU he built than i386, and would present more of a challenge.

    • @jdh
      @jdh  ปีที่แล้ว +9

      there are tentative plans for an MS-DOS/486 port in the future!

    • @thezipcreator
      @thezipcreator ปีที่แล้ว

      @@AstroSamDev looking at it, doom on the c64 looks extremely laggy and unplayable, but it's still impressive that it was done.

    • @SimonBuchanNz
      @SimonBuchanNz ปีที่แล้ว

      Doom got it's speed from several really nasty tricks, most notably modifying the executable code to draw walls as it was drawing. Not that I think jdh can't do it, but it's fairly different to what he's done so far.

  • @ScarletSnake
    @ScarletSnake ปีที่แล้ว

    Wow, above and beyond, way to go! Amazing work, subscribed and looking forward to more videos! 👏👏👏

  • @StaticallyIncorrect
    @StaticallyIncorrect 3 หลายเดือนก่อน +3

    this is exactly what some scratch (mit) users use to make 3d engines in scratch as well they got it from this

  • @Websitedr
    @Websitedr ปีที่แล้ว +1

    I remember using BUILD to create some levels for Duke Nukem 3D way back when I was a teenager. That editor takes me back.

  • @CainRG1
    @CainRG1 ปีที่แล้ว +3

    This is great! I wish we could see John Carmack react to this, lol

  • @bytesandbikes
    @bytesandbikes ปีที่แล้ว +2

    My favorite thing about the portal based engines are the non-euclidian spaces, as seen in many Marathon multiplayer maps.

  • @TheUKNutter
    @TheUKNutter ปีที่แล้ว +6

    2:49 “Coding like it’s 1995”
    Uses const

  • @marscaleb
    @marscaleb ปีที่แล้ว

    Dude I am so jealous that you are able to do this; I've so often wished I could program my own engine like this and build a game completely from scratch...

    • @ArneChristianRosenfeldt
      @ArneChristianRosenfeldt 7 หลายเดือนก่อน

      Sure you can’t? For most of us we just can’t beat the global competition. But it is not too hard to recreate this on legacy systems for nostalgia. GBA,

  • @quackcharge
    @quackcharge ปีที่แล้ว +5

    dang your level editor really made me smile, great job man! would love to see a 3 hour version, just sobscroobd!

  • @NikkiMcMistie
    @NikkiMcMistie ปีที่แล้ว

    it's genuinely impressive to me how you're able to focus so long on a project and implement stuff like that. i'm studying software engineering and I'm worried I'll never be able to do that

  • @erictalviste5793
    @erictalviste5793 ปีที่แล้ว +9

    Not sure if this is asked before, but how long did this take you to make?
    Very cool!

  • @mihailvd
    @mihailvd ปีที่แล้ว +1

    You, sir, are brilliant! ❤ I enjoyed this video so much!

  • @m0ment219
    @m0ment219 9 หลายเดือนก่อน +3

    0:25 The ideas list 💀💀

  • @Yukinebi
    @Yukinebi ปีที่แล้ว

    Great video, love it. Its nice to get a good overhead look of something so complicated and interesting.

  • @csgdV2
    @csgdV2 ปีที่แล้ว +4

    Me in 1995:
    OMG this feels better than real life

  • @Sidelobes
    @Sidelobes 4 หลายเดือนก่อน

    Super cool build-up - learned a lot, thank you for making this.

  • @DantalionNl
    @DantalionNl ปีที่แล้ว +5

    I often end up seeing these videos pop up and feeling quite inadequate / imposter syndrome.

  • @user-hz4tc2pf3x
    @user-hz4tc2pf3x ปีที่แล้ว

    I always complain about TH-cam becoming oversaturated and "I miss 2019" and then TH-cam is like BAM, new jdh video. Chill, but still entertaining. Keep up the great work!

  • @JazzyJustin
    @JazzyJustin ปีที่แล้ว +3

    You should try and get some sort of sound propagation / resonance / reverb system going, like steam audio! Way too modern for a 90s engine, but it seems like one of those cool areas where you could blend the technology together :)

    • @jdh
      @jdh  ปีที่แล้ว +1

      Definitely going to happen! DOOM has some pretty cool sound propagation stuff but it's only used for alerting monsters IIRC

    • @Brahvim
      @Brahvim ปีที่แล้ว

      Uhm, look at the OpenAL source code?

  • @n9ne
    @n9ne ปีที่แล้ว

    insane absolute gods that came up with this stuff. it took many decades to get to this point though. the first "3D" game was made by some nasa guys back in 1973 called maze war which was also the first multiplayer game. It's mostly wireframe though, but it looks 3D, and you probably know about this already.

  • @morfy2581
    @morfy2581 ปีที่แล้ว +3

    Next: programming a first person shooter like it's 1895.

  • @rekware9320
    @rekware9320 ปีที่แล้ว +1

    Kinda dig actually. You've really captured the feel of those old DOS games. I think its the lighting. Regardless, well done.

  • @fristytron
    @fristytron 11 หลายเดือนก่อน +8

    The real question is: Can it run smoothly in a 386 at 33Mhz..?

    • @ArneChristianRosenfeldt
      @ArneChristianRosenfeldt 7 หลายเดือนก่อน

      33 MHz is so arbitrary. What about Atari Jaguar?

    • @fristytron
      @fristytron 7 หลายเดือนก่อน +1

      @@ArneChristianRosenfeldt it is not arbitrary. 386 with 4mb of ram was the official minimum requirements for doom

    • @ArneChristianRosenfeldt
      @ArneChristianRosenfeldt 7 หลายเดือนก่อน

      @@fristytron yeah, I had a 386sx with 5MB , and doom ran fullscreen. So you say the 33 MHz were a requirement and the DX ? TIL

    • @fristytron
      @fristytron 7 หลายเดือนก่อน

      @@ArneChristianRosenfeldt idk bro

  • @skope2055
    @skope2055 ปีที่แล้ว +2

    I saw many implementations of doom, but this content is awesome.

  • @arnimlost
    @arnimlost ปีที่แล้ว +4

    Can't wait for the among us dating sim

  • @randomlassfromtheuk
    @randomlassfromtheuk ปีที่แล้ว +1

    at first i thought from scratch meant from scratch the game dev tool for kids basically and i was very intrigued but i was pleasantly surprised, really enjoyed the video :)

  • @xinxu5305
    @xinxu5305 ปีที่แล้ว +3

    I used to think I was a good coder. Then I found your channel. wow

  • @macrograms
    @macrograms ปีที่แล้ว

    I've followed along with hour long videos that explain what you just did in the FIRST THREE MINUTES ALONE. Amazing. :)

  • @pedroduran8927
    @pedroduran8927 ปีที่แล้ว +3

    I'm a simple man, i see jdh uploads a new video, i click.

  • @Meme-et8ju
    @Meme-et8ju ปีที่แล้ว

    I understood nothing of what I just saw, but it was surprisingly pleasing to see how my childhood game was made . A like for the skill, man. Respect!

  • @TheExtremeCube
    @TheExtremeCube ปีที่แล้ว +3

    Bring us Among Us dating sim next please

  • @dreingames9137
    @dreingames9137 ปีที่แล้ว

    0:24 "among us in space" this is such a good idea, i dont know why nobody has thought of this yet...

  • @znefas
    @znefas ปีที่แล้ว +4

    haven't seen you use Rust on your channel, have you ever considered making something with it or trying Rust? I think you'd feel at home thanks to it being fairly low and high level both, while also avoiding bugs early on with memory management :)

  • @howtoavenge1016
    @howtoavenge1016 หลายเดือนก่อน

    i love that you essentially recreated the doom engine to a t, love it love it love it

  • @arkabiswas7842
    @arkabiswas7842 ปีที่แล้ว +1

    Man, I hope one day I could get to your level of coding sir. Really awesome videos!

  • @CrimsonSp33d
    @CrimsonSp33d ปีที่แล้ว

    Its kind of wild that someone had to think of all this in the first place. Really makes you appreciate someone like John Carmac

  • @phat-kid
    @phat-kid ปีที่แล้ว +1

    i did this as a learning thing when i was a kid in 1997. i had to google the music i was listening to back then to get the exact year. i was 15.

    • @skylo706
      @skylo706 ปีที่แล้ว

      Huge respect to you. Being 15 and also with the information resources available in 95, managing this is an insane task
      Wasn't even born until 3 years later haha^^

    • @ArneChristianRosenfeldt
      @ArneChristianRosenfeldt 7 หลายเดือนก่อน

      @@skylo706just need a dad who can navigate a library and order books as advertised in c’t magazine.

  • @DerrickFargo
    @DerrickFargo ปีที่แล้ว

    It's a trip to see how video games were made before engines were really a thing. You gain perspective from seeing how developers solved simple problems that are now easily solved by block code. Also, you should get a pop screen for your mic, or move the mic.

  • @paulduvernet4012
    @paulduvernet4012 ปีที่แล้ว

    Super well done video - with the exception of that maddening music loop.

  • @RiverReeves23
    @RiverReeves23 ปีที่แล้ว

    Pretty cool to watch you coding essentially 2 decades worth of tech progress in a single video. Having lived through all of it, it's refreshing that those younger than myself can learn it all from published sources instead of the propriatary secrecy which was the 80s and 90s.

  • @bitlong4669
    @bitlong4669 ปีที่แล้ว

    This is great. Please do the 3 hour video. I recently started learning the arcane art of graphics. Lots of geometry math (as to be expected) but satisfaction of creating virtual world is immense.

  • @ghosthunter0950
    @ghosthunter0950 ปีที่แล้ว

    First time seeing your channel, and just wanted to say really appreciate the neovim configs.

  • @disembowler666
    @disembowler666 ปีที่แล้ว

    We were spoiled when SDL came out. Before that we had to interact with video memory and double buffering ourselves. Love the video!

  • @toxic_shr00m
    @toxic_shr00m ปีที่แล้ว +2

    this is unbelievably rad

  • @OverrideTips
    @OverrideTips 9 หลายเดือนก่อน

    Bro you’re jacked… 3:50 my bois arms looking filled with coffee and creatine💪🏼💪🏼

  • @Cubekid10.
    @Cubekid10. ปีที่แล้ว +1

    Oh my god i thought this meant like in the scratch coding website thing and i was impressed but this is still insanely impressive

  • @ArtofWEZ
    @ArtofWEZ ปีที่แล้ว +1

    As an artist this makes me hopeful for future with ai that people will still love a craft enough to try and learn it the traditional way.

  • @KyranFindlater
    @KyranFindlater ปีที่แล้ว +1

    love the use of ImGui for the custom tooling and editors!

  • @jarbarsi
    @jarbarsi ปีที่แล้ว

    I appreciate that instead of just ending the video with the amount of progress you achieved, you spent the time to make 'spinach cat banana game', just to have something 'playable' for the end of the video. Entirely unnecessary as the engine so far is already super impressive, but also so much more of a satisfying end to the video lol.

  • @lucazl
    @lucazl ปีที่แล้ว +2

    a day when you upload is always a good day. Keep up the fantastic work :)