Recreating DOOM in Python. Ep5 - Assets & Texture Mapping

Поділитися
Вставка
  • Опубліковано 5 тра 2023
  • Let's Understand How to Get All DOOM Assets and Implement Texture Mapping of Walls, Floors and Ceilings
    Metallica - E1M1 (At Doom's Gate) @StateOfMercury
    • Metallica - E1M1 (At D...
    Github:
    github.com/StanislavPetrovV/D...
    #coderspace #doom #python

КОМЕНТАРІ • 85

  • @CoderSpaceChannel
    @CoderSpaceChannel  Рік тому +37

    I'm wrong about the chainsaw model. The chainsaw was a real, fully functional, McCulloch Eager Beaver.

    • @JasperFoxo
      @JasperFoxo 11 місяців тому +6

      apparently the reason why it was in a bowl was because it was leaking

  • @andressepter1984
    @andressepter1984 Рік тому +49

    This series is absolute genius and definitely deserves more atteintion.

  • @vash5556
    @vash5556 Рік тому +17

    So far this series has inspired me to try this project, but in Rust. Thank you so much for these informative videos they are super helpful. Keep up the amazing work!

    • @shooterdefronvrps2
      @shooterdefronvrps2 Рік тому +3

      A snake source port and a crab source port of doom is definelly fun

    • @milijanmosic5189
      @milijanmosic5189 11 місяців тому

      @vash5556 would you mind sharing code?

  • @EnatorZ
    @EnatorZ 11 місяців тому +6

    This series is amazing, I love your dedication and the in depth work you put in. I can't wait for the next episode!

  • @luxyduxypro
    @luxyduxypro Рік тому +16

    This is exactly what i tell myself I would do in the morning at 3 am but am too lazy too even start when morning arrives 😂

    • @giantnoah
      @giantnoah Рік тому +2

      If you have time, try setting up a laptop at a library and drinking coffee/energy drinks. That's the only way I can keep up with these tutorials lol.

  • @AJB2K3
    @AJB2K3 Рік тому +4

    Thanks, it is amazing what tricks ID had to pull to make the games work.

  • @codingwithjoshuabarros1058
    @codingwithjoshuabarros1058 10 місяців тому

    Brillant Video Series, thanks for sharing this awesome knowledge!
    Also, please continue the series when you have some time:
    Enemies, particles, level selection hub, bosses...

  • @danhaworth6967
    @danhaworth6967 11 місяців тому

    This is such a fantastic series, I'm honestly in awe how this was done 30 odd years ago... Not so much the maths of it (I'm sure, given enough time, I could eventually work all this out) but doing it within the limitations of the hardware at the time is just something awe inspiring. Making all this run on a 33mhz 486? Blown away...

  • @JoaoLucas-of2hz
    @JoaoLucas-of2hz 11 місяців тому

    i love you so much please keep making those videos seriously i'm having SO much fun coding with you man

  • @maltardraco9555
    @maltardraco9555 Рік тому +3

    I never realised just how insane the engineering behind this engine was.

  • @alexandrepv
    @alexandrepv 11 місяців тому +5

    Hi Coder Space, I absolute love your tutorials. They are very clear and concise. Any chance you may return to the 3D engine series? I've been waiting to see how you approach transparent objects and maybe selecting objects in space with the mouse. Please, please, continue that series, we really need that! :) great work mate

  • @refeals
    @refeals Рік тому +3

    i love this series so much

  • @PJETEX
    @PJETEX 11 місяців тому

    Awesome 🔥

  • @prashantm9856
    @prashantm9856 Рік тому +4

    Awesome video

  • @SkyFly19853
    @SkyFly19853 Рік тому

    Welcome back!

  • @MortuusExtraLarge
    @MortuusExtraLarge 6 місяців тому

    I'm patiently waiting the next parts

  • @sim8816
    @sim8816 Рік тому +1

    thanks very helpful video!

  • @erc0re526
    @erc0re526 Рік тому +1

    Tech has evolved quite a bit, even just a couple years ago this would have been slow as a donkey without something like a python 2 C compiler (pypy ?), that's awesome! Thanks for the lesson too.

  • @user-bd5so7jd9q
    @user-bd5so7jd9q 11 місяців тому +1

    Brilliant series! Need to ask an odd question though - exactly what changes do I need to make to the code to remove all the Numba (njit) functionality - necessary partly because of the python version I want to use and also (and mainly) because I'm going to compile using Nuitka - having real-time JIT functionality in already compiled code probably wouldn't end well! Thanks in advance!!

  • @Girz0r
    @Girz0r Рік тому +1

    Very coool!!

  • @guilherme5094
    @guilherme5094 11 місяців тому

    👍Awesome!

  • @sormdev1996
    @sormdev1996 Рік тому +2

    Have you made your own tools for editing these videos? The typing for example always has the same speed. I love your content keep it up! :)

  • @badjano
    @badjano Рік тому +1

    can't wait for sprites

  • @paleophyte
    @paleophyte Рік тому +1

    Hey! Love the series, it has been super awesome to follow. I try to follow along and code while you are showing everything in the video (having the github source for sure helps, though 😉). I did notice that if you stand on the small platform where the armor normally is in E1M1 and turn, there are pink triangles that appear. Unfortunately, I'm not smart enough to understand what the problem is or how to fix it...

    • @CoderSpaceChannel
      @CoderSpaceChannel  Рік тому

      thank you, and try in view_renderer.py:
      self.sky_inv_scale = 160 / HEIGHT

    • @paleophyte
      @paleophyte Рік тому

      @@CoderSpaceChannel Sure enough. I noticed that it still happens if you step onto the window ledges (although I realize this isn't part of the intended design). I lowered it down to 100 / HEIGHT, and it seemed to take care of that problem. Not sure of the consequences of lowering it though 🙂

  • @MaxCarponera
    @MaxCarponera Рік тому +4

    Fails with Python 3.8 because of dict "|=" update operator, I think >=3.9 is mandatory. EDIT: Confirmed working with python 3.9, pygame & numba. Great didatic work man.

  • @andressepter1984
    @andressepter1984 2 місяці тому

    How can such a GENIUS implementation have such little likes :( Anyway really looking for a next part.

  • @makros_channel
    @makros_channel 9 місяців тому

    I still remember how you filmed on your first channel, in Russian. You are one of my favorite IT bloggers

  • @hugo-garcia
    @hugo-garcia Рік тому +4

    Now we will need a 4gb RAM and dual core PC just to play Python Doom in 640x480. Thanks modern languages

  • @cheezos
    @cheezos 11 місяців тому +2

    What voice synthesis model do you use for your videos?

  • @volcanonn5463
    @volcanonn5463 10 місяців тому +2

    Please make another episode and finish the series.

  • @apreviousseagle836
    @apreviousseagle836 Рік тому

    That's nuts that one of my favorite Sci-Fi weapons (The Plasma Gun) is literally the stock and upper of some unknown junky plastic dart gun, lol

  • @martinbecker2164
    @martinbecker2164 8 місяців тому

    @coderSpaceChannel, do you intend to go any further with this?

  • @illoprin
    @illoprin 4 місяці тому

    Siries about this Doom BSP engine is very complex and interesting. I would like to know how implement an enemies, weapon at this technology bounds. Stanislav, please, continue it 🙏.

  • @connoredits288
    @connoredits288 8 місяців тому

    Now how do you make the door?

  • @space470-1
    @space470-1 Рік тому +2

    The chainsaw was not a toy, it was a real chainsaw used for the sprites. The reason it's in the bucket in that photo is because it was leaking oil.

  • @mtalhakhalid1679
    @mtalhakhalid1679 Рік тому +2

    awosm i did extract orignal textures of doom and remake them with Normal and Bump textures for blender project hope that motivate you make it even better

  • @neelsb7889
    @neelsb7889 6 місяців тому

    Very interesting video series :-) What is the license for that Python Doom level viewer on Github that is linked from this video description? I do not see any license info for it anywhere - here or in the Github repository, which means that legally nobody has any permission / rights to even look at that code :-(

  • @Wilksey37
    @Wilksey37 6 місяців тому

    I'd love to see similar for Duke Nukem 3D with slopes etc

  • @ENRGguy
    @ENRGguy 11 місяців тому

    Hey, Coder Space! You have really cool videos, but I have a question about OpenGL 3D engine. I try to run the code but glm module don't have mat4 and vec3 attribute. Maybe you can help?

    • @ENRGguy
      @ENRGguy 11 місяців тому

      oh never mind

  • @DrPeeper
    @DrPeeper Рік тому +2

    Chainsaw used in doom is a real chainsaw, not a toy as you say

    • @itchywuss3511
      @itchywuss3511 Рік тому +1

      it supposed was leaking oil

    • @DrPeeper
      @DrPeeper Рік тому

      @@itchywuss3511 yes, i just didn't bring it up here

  • @davidb4020
    @davidb4020 Рік тому +1

    What's your procedure for redoing Doom in Python? Do you look at the Doom source code, understand how they do this, and then reproduce it with Python to the best of your knowledge?

  • @ppgrillo9531
    @ppgrillo9531 Рік тому +2

    We will have another videos like making weapons or ai behaviours and that? xd

  • @louismathews6831
    @louismathews6831 10 місяців тому

    Geez, there are bright people in this world.

  • @moruscerberus
    @moruscerberus Рік тому +3

    Are you going to show how to program the melting screen too?

    • @MichaelPohoreski
      @MichaelPohoreski Рік тому +3

      That’s rather trivial. Decino has a video about it _(How Doom’s Melting Screen Works)_
      The screen transition is triggered whenever the game state changes:
      wipe_StartScreen( 0, 0, SCREENWIDTH, SCREENHEIGHT );
      Doom has multiple framebuffers. One for foreground and one for background which are combined into a display framebuffer.
      The melt screen has 160 columns where each column is 2 pixels wide.
      The first column has a unique time delay offset between 0 and -15. Each consecutive column has a random time offset of -1, 0, +1 from the previous column.
      Each frame the column timer is updated. Once a column timer reaches zero the column falls down at a fixed 8 pixels/frame.
      The melt frame is deterministic due to the 256 entry random lookup table.

  • @elberghaswe2761
    @elberghaswe2761 2 місяці тому

    will this series continue?

  • @Jkauppa
    @Jkauppa 11 місяців тому

    btw, if you just build the convex space adjacency tree, you get all the visible faces for free, for ray casting (inside a convex polygon space partition, you always see the inside walls)

    • @Jkauppa
      @Jkauppa 11 місяців тому

      then you get the wall triangle list in absolute order, a convex polygon space is always properly ordered for draw order, same for object meshes inside a convex polygon boundary box

    • @Jkauppa
      @Jkauppa 11 місяців тому

      you can traverse all the triangles in drawable sort order always, same for all the objects, in the sectors, being sectors themselves

    • @Jkauppa
      @Jkauppa 11 місяців тому

      you can also have adjacency/connected/strip list of triangles in the convex triangle space partition, to get the triangles in connected draw order

    • @Jkauppa
      @Jkauppa 11 місяців тому

      assume that objects are never inside others, ie convex spaces and objects, ie, always can be rendered in triangle plane distance order without errors

  • @yassendimchov8910
    @yassendimchov8910 11 місяців тому

    When are you uploading next episode bro

  • @Ciiner
    @Ciiner 5 місяців тому

    You should add player pyshics and sprite rendering!

  • @Anonymox_
    @Anonymox_ Рік тому +3

    A quantos anos você codifica em python

  • @aronimo5800
    @aronimo5800 11 місяців тому

    is the series really coming to an end?

  • @nitrgnsis1144
    @nitrgnsis1144 11 місяців тому

    og doom can run on basically everything, this doom can run on high-end machines only.

  • @WichidNixin
    @WichidNixin 10 місяців тому +1

    The song! Where is this song from?!?!?! It sounds like someone used samples of Master of Puppets to recreate E1M1. The link to the video doesn't work and the StateOfMercury doesn't exist. Where is this song from?!?!?!

    • @CoderSpaceChannel
      @CoderSpaceChannel  10 місяців тому +1

      This cover was performed by @StateOfMercury but his UA-cam channel disappeared

  • @serj5931
    @serj5931 Рік тому +2

    when I come across this video, I have the intention to do something of my own. about the old channel I hope you will come back

  • @pschroeter1
    @pschroeter1 Рік тому

    I just wish someone would turn the original Doom into a fully 3D game. I don't feel Doom III and Doom 2016 feel like Doom.

    • @maudjito
      @maudjito 8 місяців тому

      Some attempt had been made with modding, but the current map editing tools are just too good so it's still 2.5D.
      Your best chance would be a modern Boomer Shooter like Amid Evil

  • @razumm7573
    @razumm7573 7 днів тому

    help me pls add mobs in this doom viewer(

  • @SnipE_mS
    @SnipE_mS Рік тому +1

    Me listening to stuff I don’t understand 👁️👄👁️

  • @jinr3d
    @jinr3d Рік тому

    haha make doom in ue5 and then ue6 and so on lol

  • @Astroid_
    @Astroid_ Рік тому +3

    1st haha

  • @GegoXaren
    @GegoXaren 11 місяців тому

    Why are you using a computer voice..?

    • @GeGa-jq5es
      @GeGa-jq5es 11 місяців тому

      maybe he doesn't have a mic or he doesn't want to use his voice

  • @DELOREAN389
    @DELOREAN389 Рік тому +1

    Will it run on my 486?

  • @shurmurray
    @shurmurray Рік тому +1

    Doom's chainsaw was made based on real chainsaw, not toy.

  • @Samford_
    @Samford_ 11 місяців тому

    why are you using stateofmercury’s e1m1 on master of puppets rendition? at least credit him, or use a normal one

  • @wanteed273
    @wanteed273 Рік тому

    boring & time waste

  • @It_Was_The_Entity
    @It_Was_The_Entity Рік тому +1

    The chainsaw wasn't a toy. It was an eager beaver chainsaw.