Programming portals for my DOOM-style FPS

Sdílet
Vložit
  • čas přidán 3. 06. 2024
  • obsolete C programmer copies valve (15 years too late)
    PATREON: / jdah
    TWITTER: / jdah__
    C LIVE RELOADING: github.com/jdah/reloadhost
    EXAMPLE SOFTWARE RENDERER: github.com/jdah/doomenstein-3d
    GITHUB: github.com/jdah
    EDITOR: NeoVim
    CONFIGS: github.com/jdah/dotfiles
    THEME: gruvbox
    RESOURCES:
    * Portals in OpenGL: github.com/ThomasRinsma/openg...
    * @SebastianLague 's video on portals (in Unity): • Coding Adventure: Portals
    * DOOM Game Engine Black Book: fabiensanglard.net/gebbdoom/
    * DOOM source code: github.com/id-Software/DOOM
    * The DOOM wiki: doomwiki.org/
    0:00 Intro
    0:15 Software Renderer
    6:40 "Real" 3D
    15:00 Extras
    16:30 Outro & Thanks
  • Věda a technologie

Komentáře • 440

  • @Plexxl
    @Plexxl Před rokem +1923

    I cant wait for the next video where he scraps the entire codebase and restarts from scratch!

    • @MishaHivemind
      @MishaHivemind Před rokem +181

      using scratch!

    • @stathiskapnidis9389
      @stathiskapnidis9389 Před rokem +38

      I'm waiting for a "making doom over 24 hours again" video

    • @divine203
      @divine203 Před rokem +22

      Don't give him ideas

    • @jdh
      @jdh  Před rokem +408

      next one is gameplay, I promise

    • @Plexxl
      @Plexxl Před rokem +107

      @@jdh If you don't, put my comment up at the start of the next video and say how I was correct. Deal?

  • @thirteen3678
    @thirteen3678 Před rokem +760

    Ah, of course. The bi-monthly developer tradition of scrapping everything you did, just to redo it.

    • @telnobynoyator_6183
      @telnobynoyator_6183 Před rokem +15

      actual and factual

    • @mikolmisol6258
      @mikolmisol6258 Před rokem +8

      I try not to do that nowadays. It doesn't matter that the code is atrocious - if it works, it means I can actually progress and get other parts of it done rather than keep refactoring. But it's one of the hardest lessons to learn, especially on a project where you are your only boss. 😅

    • @plebisMaximus
      @plebisMaximus Před rokem +15

      @@mikolmisol6258 Doesn't have to look pretty as long as it works. If you do messy code for work, you got job security as nobody knows shit about what you just made. If you do it your spare time, nobody can steal your secrets as nobody can read your spaghetti. Writing awful code is the meta.

    • @biohazard2869
      @biohazard2869 Před rokem

      ​@Plebis Maximus LOL. Great point.

    • @anon_y_mousse
      @anon_y_mousse Před rokem +2

      @@mikolmisol6258 The struggle is real.

  • @eformance
    @eformance Před rokem +499

    I realized while watching this why Portal has an amber and blue glow around the portals. It's VERY hard to visually distinguish a portal without having those decorations.

    • @clonkex
      @clonkex Před rokem +78

      Weirdly, you get used to it. I spent a while working on a portal clone some years ago and it trained my brain to be able to recognise portalling planes and reason about the broken geometry much more easily.
      Not useful for a real game, of course, just an observation.

    • @user-ob7pl5st1f
      @user-ob7pl5st1f Před rokem +62

      @@clonkex know the skill will never be useful in life but I now want to have expertise in portal recognition.

    • @sircalvin
      @sircalvin Před rokem +66

      @@user-ob7pl5st1f youll just be walking down the street and suddenly be like "ah shit" when you realize something is a portal

    • @clonkex
      @clonkex Před rokem +11

      @@sircalvin lmao exactly

    • @fantastikboom1094
      @fantastikboom1094 Před rokem +14

      @@sircalvin No more falling into backrooms

  • @Vixeneye1
    @Vixeneye1 Před rokem +150

    I'm about half way through this video and I wanted to say something. I can honestly respect that you are capable of seeing an insurmountable problem and rather than spent 40 years kit bashing it together, you seek better solutions.
    Love your dedication to just creating cause you can.
    I'll always watch your videos because they're always so inspiring.

  • @Banjoei
    @Banjoei Před rokem +85

    What's funny is that GZDoom does have portals, they're used in MyHouse for the non-euclidean effect

    • @str0680
      @str0680 Před rokem +5

      Yep, you can even see that you get teleported when going downstairs if you look up, the top floor disappears. I was just messing around in Ultimate Doom Builder and made some seamless stairs and 2 floors, you can even look back up and see both floors at the same time.

    • @Banjoei
      @Banjoei Před rokem +8

      @str0 That's only in the first house though, to make the map seem more amateur than it is, and that's actually a line teleport instead of a portal. but when the house becomes altered the stairs are actually seamless.

    • @str0680
      @str0680 Před 11 měsíci

      @@Banjoei I heard people say it's to make it look amateurish, but you couldn't really use a portal at those stairs because linedefs are infinitely tall, so he would have to put something above the staircase to cover up the paper thin portal which would obscure the top floor.

    • @catattackmakesmusicsometimes
      @catattackmakesmusicsometimes Před 11 měsíci +1

      @@str0680 he also could've just used a floor portal at the stop of the stairs though, and nothing amateur like that shows up later on. it seems pretty intentional, but maybe it was an artifact from being one of the earlier parts of the map before he learned more about how it works

    • @Banjoei
      @Banjoei Před 10 měsíci +2

      @@str0680 they did use a portal in the stairs in the second house though

  • @IanZamojc
    @IanZamojc Před rokem +46

    I like how you made that circular pit shape in your test level that choked the Doom engine during its development until they implemented BSPs.

    • @jdh
      @jdh  Před rokem +19

      good catch :)

    • @fish3443
      @fish3443 Před 10 měsíci +4

      E1M2 is crazy

  • @onyxtv5745
    @onyxtv5745 Před rokem +96

    Really cool vids like always ! It's a big inspiration to watch someone being able to code such projects and have fun !

  • @sgtmajorkiwi
    @sgtmajorkiwi Před rokem +50

    god, the shapes of the maps he's drawing are too hard for my just-woke-up brain to handle

  • @treytomes
    @treytomes Před rokem +17

    That was great! I'm a little disappointed that you abandoned the ray-casting engine, but I get you actually wanting to build a finished game this time.

  • @monsoon835
    @monsoon835 Před rokem +27

    you're easily the most talented indie developer on yt when it comes to coding and shit, keep it up

  • @btarg1
    @btarg1 Před rokem +19

    This engine looks SO COOL! I can't wait to see what you create with this!

  • @christianheidemann3829
    @christianheidemann3829 Před rokem +3

    Funny that the comment in the OpenGL Forum (11:45) came from Eric Lengyel. He's the guy behind the "Foundations of Game Engine Development" books.

  • @TheAsuro
    @TheAsuro Před rokem +37

    I'm currently implementing the same code for oblique clipping planes that you mentioned, and it did give me a boost of confidence that you struggled with it too! It's very hard to figure out what's going on if something is wrong.

    • @jdh
      @jdh  Před rokem +20

      I had a lot more issues with it than I showed in the video 😅 I spent a few hours trying to debug my initial implementation only to find out that I hadn't read the last few paragraphs of the paper and had missesd the (very important) step of scaling the near plane such that the far plane doesn't get too messed up. oops.

  • @Skeffles
    @Skeffles Před rokem +1

    Love the video! It's awesome seeing how these portals come together and how they create weird geometry.

  • @Zettabit7
    @Zettabit7 Před rokem +5

    These portal setups are giving me some strong Antichamber vibes. Very cool.

  • @Urammar
    @Urammar Před rokem +3

    Dude I was JUST thinking I wonder what happened to this, and I check and see 25 mins ago you posted this. Noice. Its very inspirational to see your work!

  • @sphelx
    @sphelx Před 8 měsíci

    This is really impressive that you've managed it all by yourself (okay sure, external libraries, etc, but still!) Well done! Impressive stuff :)

  • @transientwaveform1475

    I happen to be implementing stencil buffer portals in a Doom source port at the moment! Great video

  • @gedaliakoehler6992
    @gedaliakoehler6992 Před rokem

    Super awesome. Love this series!

  • @mxc_clips
    @mxc_clips Před 11 měsíci +2

    I think it would be awesome if you made video on maybe your journey getting to the point you are at now with your development skills. I noticed on one of your streams that you mentioned that you didnt go to university, and I always find it interesting/helpful seeing other developers journeys.

  • @MrMateloi
    @MrMateloi Před rokem

    I swear these videos just keep getting better

  • @MikeDawson1
    @MikeDawson1 Před 11 měsíci +2

    you kind of remind me of me... I grew up on Doom, made lots of levels in the DOS WadED level editor when I was a kid. Had Doom books in elementary/junior high school. Recently read the Doom Black book several times. Working on my own game engine, got decently far, then decided to start over from scratch again. Now that I'm decently along I'm already thinking of the next version... I think that working on game engines and using them for creative coding might just be more fun than trying to make an actual game and I need to accept that!

  • @jumbledfox2098
    @jumbledfox2098 Před rokem +2

    I literally yelped out "YESS!!" when i saw this video!!! been waiting so long for it!!

  • @SidewaysCytlan
    @SidewaysCytlan Před rokem

    Faen. Du er dansk! Quite impressed with the work you've done, and the style of presentation. It's the kind of nerdy humour I love!
    Looking forward to next time!

  • @TheGrimravager
    @TheGrimravager Před rokem

    you're insane in the best way possible
    this was amazing to watch

  • @N3mo_Ahead
    @N3mo_Ahead Před rokem

    This is great! Cant wait for the next update!

  • @lop0159
    @lop0159 Před rokem +1

    You are such an inspiration to me, You are a coding magician

  • @Banzai8th
    @Banzai8th Před rokem +3

    This is something I've been interested in doing myself. Good luck! Are you planning on using a layers paradigm or node based one? I think the latter could definitely help set this project apart.

  • @FA18_Driver
    @FA18_Driver Před 2 měsíci

    Dude in all honestly, I think you’re a genius. Like a once in a generation genius, like a A Beautiful Mind. John Neumann.
    I watch your videos and literally my jaw drops at your skill in logic and programming. You’re by far the best I’ve seen. Paired with your great narration and editing, audio comping, and precise mastery of language makes your videos S tier.
    Thank you for giving me a look into the mind of a genius, to me you’re a wizard and what you do is magic. To think this in your mind and make it reality?
    You inspire me. Thank you.

  • @eboatwright_
    @eboatwright_ Před rokem +1

    This looks aaaawesome!

  • @gavinocasino2274
    @gavinocasino2274 Před 10 měsíci +1

    I love your videos, theyre so inspiring. Id love to get into programming but Im having a bit of trouble motivating and getting started as a whole. Witth that, how did you start learning how to program? I really appreciate it all that you do for not just entertainment purposes but for learning

  • @TECHNOJESTER
    @TECHNOJESTER Před 11 měsíci +1

    I was writing a little primitive C++ SDL2 OpenGL (glew

  • @setlarketlar6048
    @setlarketlar6048 Před rokem +11

    praise God he has uploaded

  • @impracticalKim
    @impracticalKim Před rokem +37

    Thats really cool, you could almost model MyHouse with these portals

  • @VoidloniXaarii
    @VoidloniXaarii Před rokem

    This is so amazing ❤ thank you so very much 🤯

  • @mcfleen7593
    @mcfleen7593 Před rokem +3

    this is gonna be a crazy speed game

  • @adytm
    @adytm Před rokem

    Awesome effort!

  • @Nobleoasis27
    @Nobleoasis27 Před rokem

    I literally just came back to your channel after over a year and you've just uploaded.

  • @Fiendzy
    @Fiendzy Před rokem +1

    To that comment about y-sheering, I actually always enable that effect in old game engines if it supports it; Gzdoom, dark forces source port etc: it’s strangely nostalgic for me

  • @jeanvaljean1893
    @jeanvaljean1893 Před rokem +9

    I'd be very interested to learn about your (neo?)vim setup : could you elaborate on that in the future ? Maybe in a specific video because I'd guess it wouldn't interest everyone ?

  • @sardinemeowstein
    @sardinemeowstein Před rokem

    What a coincidence, I just watched the first video just a few hours ago! I live this.

  • @formulaetor8686
    @formulaetor8686 Před rokem

    You're so cool bruh. I always wanted to do these things but end up with all incomplete projects. Sucks to be me but you're amazing man.

    • @jdh
      @jdh  Před rokem +3

      I have ton of incomplete projects as well! nothing to be ashamed of, that's how you learn. just have to keep at it :)

    • @formulaetor8686
      @formulaetor8686 Před rokem

      @@jdh Yeah I guess you're actually right. I got motivation to get my personal projects done!. Thanks!.

  • @smellthel
    @smellthel Před 11 měsíci

    I’m already loving the game’s vibe

  • @Hennesg
    @Hennesg Před 8 měsíci

    heres me praying you get into modular synthethis and design eurorack modules. Your programming skills are crazy

  • @moorane_
    @moorane_ Před rokem +1

    I love non euclidean geometry like this. reminds me a lot of antichamber

  • @PlanetComputer
    @PlanetComputer Před rokem

    HELL YEAH JDH KEEP WINNING!!

  • @idkbruh173
    @idkbruh173 Před rokem +1

    the color scheme in 14:48 is really nice
    would be a cool (and very unique) palette for a dystopian fps portal game 😉

    • @jdh
      @jdh  Před rokem +1

      I always thought it looked quite Antichamber like :)

  • @Tigrou7777
    @Tigrou7777 Před rokem +1

    Trivia: Duke3D has also used portals (or at least something very similar): mirrors are implemented by rendering the level as if the camera were behind the mirror, looking into the room where the player is standing. If you walk through them (with a noclip cheat), you'll see a "copy" of the level, with everything reversed horizontally.

    • @Roxor128
      @Roxor128 Před rokem

      Only works in v1.3D, though. Things just get all smeary if you try it in the Atomic Edition.

    • @Tigrou7777
      @Tigrou7777 Před rokem

      @@Roxor128 I checked what you say and this is correct. I think the reason is that 1.3D required to have a big room behind mirror while in 1.4 that requirement was removed. Anything behind mirror will be ignored (so all you will see is HOM)

  • @amp08021
    @amp08021 Před rokem

    I'd really love a video about your vim setup!

  • @stysan
    @stysan Před rokem

    bro this is amazing

  • @Theonewithaplanz
    @Theonewithaplanz Před 11 měsíci

    Wow, this looks amazing! When you finish, may you please realease the software

  • @felixklinge5571
    @felixklinge5571 Před rokem +4

    Very cool tech! I wonder if you explored the idea of moving the software renderer into a compute shader + upgrading it to a fully 3d renderer...Although that certainly wouldn't have helped with debugging. Quite the contrary actually 😅

  • @frostymcfrosts2831
    @frostymcfrosts2831 Před rokem +2

    I love how I understand nothing but still enjoy the video😂

  • @tacomies
    @tacomies Před rokem

    I wish you uploaded more frequently but I also get why you don't, this is amazing

  • @pelihahmo6951
    @pelihahmo6951 Před rokem +1

    That is really cool

  • @andressepter
    @andressepter Před 4 dny

    Comgarats! You created something that enables level designers create a totally frustrating living hell to players.

  • @tehflyingknee1
    @tehflyingknee1 Před rokem

    Love the vids for both the content and aesthetic. What font do you use?

  • @seth-blank
    @seth-blank Před 11 měsíci

    Love the videos, one question though what os and window manager (if linux ) you use?

  • @Mr.Postal
    @Mr.Postal Před měsícem +1

    I hope that we can use the code too to also make a game. Because i have the same dream like u had here too, thats why u got recommended too

  • @Samwka_
    @Samwka_ Před rokem +1

    shoutout to my bro Ominous Black Pillar always there to support your creations🔥🔥⬛

  • @JustinBA007
    @JustinBA007 Před 10 měsíci

    Bungie's Marathon actually has a lot of non-euclideon geometry within the game. It was the first FPS game that could have multiple floors over the top of each other, and the way they did it was actually by using portal based rendering. And instead of hiding it, there are multiple places within the campaign where you can find hallways that come from nowhere.

  • @squiddobutboy
    @squiddobutboy Před rokem

    and jdh returns

  • @PamelaKivi
    @PamelaKivi Před 2 měsíci

    "But i always think they are missing something, portals"
    Doom teleporters: DO I NOT EXIST??

  • @lassipulkkinen273
    @lassipulkkinen273 Před rokem +1

    This is starting to look really similar to something I was working on about a year and a half ago. And it had procedural generation, too, though mostly boring with the occasional infinite tunnel. Ultimately I drove myself crazy trying to do shadow volumes across portals, and moved on to other stuff.

  • @skifli
    @skifli Před rokem +1

    Gotta love the rewrite.

  • @MatheusLeston
    @MatheusLeston Před 14 dny

    14:40 "Than we have your classic infinite stairs, very non euclidian, very confusing."

  • @cl-ze9qu
    @cl-ze9qu Před 9 měsíci

    Hi, does it happen to be possible one day you explain your journey on learning programming in a such complex level? You see, this is amazing and very inspiring, and it would be cool to know how it went for you, what methods did you use, or even some tips that could be shared with us that could help us learners :)
    Props to the awesome work!

  • @preistoriaanimation4658
    @preistoriaanimation4658 Před rokem +1

    I can't wait to finish the video, I Remember the last one, super interesting by the way

  • @clonkex
    @clonkex Před rokem +1

    13:53 For these problems, I found the easiest fix is to "tophat" the portal plane. When the camera is within some close distance of the portal, expand the plane into an open-fronted cube. In other words, move the plane backwards along its normal (away from the camera) and add sides, a ceiling and a floor, all rendered as portals. This fairly easily solves the near-plane issues. even for quite large near-plane distances. I have a tonne of useful links in a Reddit post from a while ago. I'll include that in a reply here to try to avoid YT eating it.

  • @tomoli1
    @tomoli1 Před rokem

    Literally watched the previous video just a hour ago, let’s go 🤩

  • @fantastikboom1094
    @fantastikboom1094 Před rokem +2

    Dаmn that's looking cool. Now what about mirrors and a support of alpha textures? Would be cool to see those implemented, and maybe full 3D editor (tho it won't be DOOM anymore, more like Quake).

  • @culpritdesign
    @culpritdesign Před rokem

    This is awesome.

  • @Povilaz
    @Povilaz Před rokem

    Very interesting!

  • @scorcism.
    @scorcism. Před rokem

    i dont understand anyof this but i like to watch so im always here

  • @nickgeiserr
    @nickgeiserr Před 11 měsíci

    i know you wont see this, but you are my favorite youtuber out of all. Your videos have helped me learn and inspired me to learn a completely new level of programming. Thank you and keep making great content

  • @ess4591
    @ess4591 Před rokem

    Legendary comeback

  • @koskenkorva123
    @koskenkorva123 Před rokem +3

    Guess what! I've got a fever, and the only prescription is more portals!

  • @saivishnu725
    @saivishnu725 Před rokem +5

    17:15 minutes of not understanding a word but still looking at it with wow

    • @frostymcfrosts2831
      @frostymcfrosts2831 Před rokem +5

      This video has been out for 3minuites. I am pretty sure you haven’t had the time to watch the whole video

    • @saivishnu725
      @saivishnu725 Před rokem +1

      @@frostymcfrosts2831 i did watch it later on.

  • @flippingbananas-1514
    @flippingbananas-1514 Před 10 měsíci

    Totally reminds me of Bisqit's video on his Doom style renderer with the slow motion render

  • @yzhk3036
    @yzhk3036 Před rokem

    Super cool!

  • @novictim
    @novictim Před rokem

    so cool!!

  • @moosetwin9023
    @moosetwin9023 Před rokem +1

    there's been a lot of good portal "remakes" recently, from the N64 port, to this

  • @barterjke
    @barterjke Před 11 měsíci

    The single time I felt smart while watching this video is when you mentioned triangulation. This one i actually implemented in the uni

  • @Youshinaka
    @Youshinaka Před rokem

    You sir, are a God

  • @unknowngamedev909
    @unknowngamedev909 Před rokem +1

    can't wait for the next video where you scrap opengl and use dx12

  • @user-hk7fz5yj8e
    @user-hk7fz5yj8e Před 8 měsíci

    These portal setups are giving me some strong Antichamber vibes. Very cool.. These portal setups are giving me some strong Antichamber vibes. Very cool..

  • @Ilovecarrot
    @Ilovecarrot Před rokem

    I am relieved to know that this man is alive.

  • @ALLenROOK
    @ALLenROOK Před 9 měsíci

    I have never seen a game with such an impressive concept. This could be legitimately amazing. No game I have ever played has successful non-Euclidian elements. You can think of almost any idea imaginable with the engine!

  • @Hamdad
    @Hamdad Před 9 měsíci

    It might be a cool continuation of this series to see how far you can push a sector based engine on modern hardware. Games like Shadow Warrior pushed it pretty far, with room over room, transparent water, voxel objects, drivable vehicles and so on. But is that the absolute limit, feature wise? If not, where is the limit? What if fps engines never moved on to polygons?

  • @jussiroutila4942
    @jussiroutila4942 Před 7 měsíci

    2:51 Euclid having one last laugh

  • @jeffthepotatoman2453
    @jeffthepotatoman2453 Před rokem

    New jdh video!

  • @pascalthiele5719
    @pascalthiele5719 Před rokem +1

    Excellent work, if that means anything coming from a random chatter on the internet. Your software renderer in particular is interesting to me, because the only significant advantage graphics processors seems to have is performance. Software renderers do not rely on the more frequently changing graphics processor architure and therefore are less likely to break in the future, they can make use of the advanced branch prediction of the central processor and are more logically flexible. Especially since it has been multiple decades since software rendering was common, I would have liked to see what game quality your crafty fingers could have squeezed out of the central processor. Good luck with your game nonetheless 🙂

  • @dandymcgee
    @dandymcgee Před rokem

    hey, that's pretty neat!

  • @OliviaTheVampyr
    @OliviaTheVampyr Před rokem

    Any idea if there will be more Minecraft videoes? Would love to see you add even more to your Minecraft thingy

  • @126sivgucsivanshgupta2

    Any plan on streaming the development on yt ? That would be nice to have in the background while coding

  • @lollel9309
    @lollel9309 Před rokem

    nice project

  • @ChrisVideosGreek
    @ChrisVideosGreek Před rokem

    Very cool

  • @velocity_gamer3989
    @velocity_gamer3989 Před 10 měsíci

    Where did you learn how to code and also what age? Bro you're honestly my hero, you're AMAZING. What languages do you know and would you recommend any courses? Also, a suggestion is make a vid explaining how you learned how to code, you would gain a large % of subs after the vid would be released. Where did you learn how to code and also what age?

  • @YmanYoutube
    @YmanYoutube Před rokem

    Hey man, i was wondering with the amount of very cool things that you're making which major did you choose in college? and did it help?

  • @EmApex
    @EmApex Před rokem +1

    This is the first video of this project I've seen so apologies if you already have something in mind for this, but the first use case for these portals I thought of was to solve the room over room problem. You could fake overlapping rooms using portals by having them in different parts of the map but connecting them in a way that seems seamless to the player

    • @DeathByFilmStudios
      @DeathByFilmStudios Před 11 měsíci

      Yes, that's how the build engine did room over room (duke 3d, blood)

    • @EmApex
      @EmApex Před 11 měsíci

      @@DeathByFilmStudios huh, I had no idea