Hacker News new | past | comments | ask | show | jobs | submit login
DOOM maps to SVG to laser cutter (theor.xyz)
273 points by fmeyer on April 17, 2023 | hide | past | favorite | 48 comments



Looking at the last image on the page, if that's meant to be E1M1, unless my memory is faulty, I think the author accidentally mirrored it at some point in the conversion process (possibly when gluing it together, by turning each layer upside-down?)


The first image of the batch of three before that is also E1M1, so you can compare and see that they do match up in an inverted fashion, proving you correct.


Yep, the spawn is in the upper left of the photo; orienting the spawn down, the map sends the user north and west, not north and east.


Yes, had my head spin till I compared the top down view with the result side by side.

At the conversion, because the elevations are not flipped.


Came here to say the same thing. Threw me for a loop! Glad I'm not the only person who noticed.


Author here. You're right, I actually glued it the right way


When I first got my 3D printer the first things I printed were Mario 64 maps small enough I could hold in my hand.

The models were readily available online, I had to add some supports, scaffolding and caps to make solids of what was essentially a giant surface but it only took a few minutes per map.

I am genuinely surprised how rarely you see classic gaming models and levels printed.


This sounds like a great idea. I don't suppose you released those edited models?


It's weird having real spacial memory of places I've never been. From 30 years ago.


> It's weird having real spacial memory of places I've never been. From 30 years ago.

You were there, it was real. The memories are real. The spaces are real even if not corporeal.

For me it's places from my childhood I can still visit without feeling alienated. If I visit my childhood home that we sold decades ago, there's someone else living there and I don't see with the same eyes either. But the multiplayer maps are the same.

I play the FOSS FPS called Xonotic now just for the entertainment. I realize I was never as good as teenager me believed I was. But I can learn. Sometimes when I'm gibbed early in a Clan Arena match, waiting for the round to end, I'll just rise to the top of the map and see the fake sunrise backdrop of my childhood. I can also recommend defrag mode, just running around a track parkour style trying to maximize efficiency is extremely relaxing.

Gotta wonder if this could be used to improve elder care for our generation. Imagine being in an old folk's home with VR headset and playing with your peers in familiar surroundings?


Oh really. Have you actually visited that childhood home recently? Did you move away at a young age by any chance and never went back since?

I know I did. Until one night I randomly pursued the place in street view. It's uncanny, looking at it, not being sure which things changed and which you don't remember correctly. Was the swingset in the park always yellow? Was that store always on that side of the other one? It really fucks with your sense of reality


Check out the gzdoom map series Knee Deep in Gzdoom, or the original 'de-make' of it 'Knee Deep in Knee Deep in Zdoom'. It's a remake of episode one but using all new advanced features of zdoom, and hugely expanded maps. It's a ton of fun and you'll instantly recognize all the old areas and then explore new stuff added to them. It's a ton of fun.


It took me a long time to realise that the outside area was probably where the ships landed, and the big wall to the outside area that opens up (but is a secret) is the blast shield.


At some point someone somewhere is going to build a real-life E1M1 replica (as in something you can walk through). I kinda suspect it already exists.


Nice work, but I feel kind of let down by it being sliced and stacked.

would have been much more impressive if all surfaces were lasercut (with automatically generated finger joints for extra bonus). Could even have marked the surface with hints for assembly.

Instant product to sell on etsy for people to paint their own physical 3d doom level.

3dprint some floating eyeballs, and grab a G.I.Joe figure and you have a doom tabletop game.


Author here It's a matter of scope aaand the fact that I have only si much room to dedicate to a physical map if doom :)


This is excellent, I could see using this as a foundation to build a set of drink coasters. A couple of years ago I used wad2svg to penplot every level in the original DOOM. The result: https://twitter.com/liviopacifico/status/1396540463432146944


> designed with modding as a goal

That's a bit of a claim? Just because the data is separate from the binary doesn't say anything about the goal.


7. Scott Francis[Mecham asks:

“Recently someone posted about their experience in determining the file structure of the Doom WAD file. How did you feel when people were discovering how to modify Doom, from building new levels, to changing the executable itself (dhacked) originally without any information from id? In your opinion, is the modding community a valuable place for creating future game developers?”

John Carmack Answers:

“The hacking that went on in Wolfenstein was unexpected, but based on that, DOOM was designed from the beginning to be modified by the user community.

[…]

I still remember the first time I saw the original Star Wars DOOM mod. Seeing how someone had put the death star into our game felt so amazingly cool. I was so proud of what had been made possible, and I was completely sure that making games that could serve as a canvas for other people to work on was a valid direction.”

https://m.slashdot.org/story/7828


John Carmack has talked about how much they liked the mods for wolf3d and intentionally designed WAD loading to make it easy to mod.


Doom shipped with a feature to launch with external wad (patch wad) files from the command line that could replace maps and textures. There's no reason to ship that apart from modding.


> There's no reason to ship that apart from modding.

Not having to rebuild the executable speeds up iterations when designing a level.

Having the ability to easily have a single-level game is very useful during play testing.


I don't think you understood the comment. The game supports two WAD files. One primary containing the primary assets and levels. This is the one they'd also be working on during development. No need to rebuild the executable when making changes to the primary WAD.

Then there's PWAD ("patch" WAD), which are applied on top of the primary WAD ("IWAD").

There's no reason to implement support for that except for the ability to add modifications ("patches")

I don't know why people in the comments are speculating about this when it's well documented that this was the intention of the WAD system.


Are there any areas in the maps where a lower area extends beneath a higher area? If not, could you use a single block of acrylic and just laser-ablate to different depths instead of cutting each layer separately and then gluing?

I don't know if all laser cutters support that kind of operation, but I had some badges and a wax seal stamp like that made at a makerspace about a decade ago. I brought in PostScript files[1] where different colours were assigned to different depths on the cutter. The depth was remarkably precise and consistent - it looked like it had been performed using a tiny CNC router.

[1] I think? I made them in InkScape, but the makerspace couldn't use SVGs directly.


do this on a slab epoxy table after you fix the orientation (it's flipped). omg would that be beautiful.


I thought of this, as I also dabble in woodworking, but that's one step too far in terms of nerdiness for my SO


not for you... sell it. E1M1 Table for sale: $20,000. There are people out there that aren't woodworkers with lots of money for nostalgic stuff like this. Seal the top with glass (or clear acrylic) so you can see into the level. Oh man oh man.


That's really neat! I can't see the 3d model files anywhere - I'd be keen to get the STL/STEP for a personal art project if anyone knows where they are?


> Just have to glue it now !

for extra bonus points, fill the pools with glowing green slime (or lava, depending on the map)


They should try this for Duke Nukem 3D.


I think duke 3d maps arent strictly laid out on a 2d plane though are they? I know they use some above/below sectors but I"m not sure if those are just portals to other parts of the map (havnt planed as much duke as I have doom)


Duke Nukem 3D allows you to create a single sector that intersects itself several times. And you can walk right through the path with no issues.


Iirc not a single sector, but you could built impossible spaces like that using multiple sectors with the restriction that overlapping sectors must not be visible at the same time. Otherwise you would get rendering glitches.

In addition to that, there’s also teleports used for elevators or water. They move you around then using/jumping in. Multiple elevator transports can move you in impossible ways like getting into an elevator, driving down, only to arrive at other side of the same floor.

So I agree. Might work for some maps, but not in general.


No, really. You could make a single sector that was a long tube, it could curve in over itself. And you could do that multiple times. And even though such a construction is physically impossible, the engine would still let you walk through the tube with 'proper' collision, and render it as if it was possible.


The editor manual said that you couldn't do that, and I'm pretty sure I tried and the game glitched. You had to split that sector into multiple ones for that to work, even though from a player's perspective it looked like a single corridor.

As a player, you could see the extents of a sector when you looked at the automap, because the map became visible sector-by-sector.

The exact rule of the editor / engine was actually even stricter. Not only could a sector not overlap itself, you had to make sure that at no position you could see two sectors that overlapped, or the graphics would glitch. If you wanted overlapping, you had to split sectors just to please the engine, even if floor/ceiling height, lighting, textures etc. were the same.


The most notable would be the spiral staircase right in E1M1, leading to the cinema projector booth. It looks perfectly aligned in the 3d view, but if you look at the map you would notice what it consists of the multiple sectors which are misaligned just a bit.


Not that this contributes a lot to the overall discussion, but from what I remember, the misalignment in that case wasn't necessary. Vertices could have the same coordinate, but it's just easier in the editor to build that stair case if you can actually find and click them.


That's how I understood it too. The misalignment was because the editor would automatically turn two one-sided lines (walls) into a single two-sided line and connect the sectors, and mess everything up. The engine itself probably didn't need the misalignment.

The engine DID need the "lots of sectors so you don't see two overlapping sectors at once", which came for free with a spiral staircase.


You can but you shouldn't, it really mess the engine, making essentially a one-sided... walls-which-arent-till-they-are.

I just made two sectors separately and moved one on top of other.

https://imgur.com/a/uDxMDBp



Nope.

Just tested it: https://imgur.com/a/uDxMDBp


Just when I thought I had everything I wanted, I realize my life isn’t complete without this.

Amazing work.


FreeDoom has free as in freedom IWADs.


Very cool. Send one to Carmack.


Wellllll... the levels were designed by Romero, who I'm sure would love it, but I'm not sure on what terms Carmack and Romero are these days.


They're gucci, send them to both.


Shout out to nom, a fantastic parser combinator framework for rust.

Love the result, and can't wait to see it in multiple colors.


nom is amazing, especially because it's so incredibly versatile. If I had one complaint, it's that I find it challenging due to how versatile it is. You can choose between different error types and input types and etc. It seems to work best if you use &[u8] as the input, otherwise things can get very tricky.

That said, for purely binary formats, I strongly recommend folks check out Kaitai Struct if they haven't already, just because I think the concept is really solid. I found out about Kaitai Struct because I accidentally did something fairly similar that was Go-specific (go-restruct) and someone else pointed out Kaitai to me.

Parsing file formats was never super awful, but I'm glad that the ergonomics of writing fast, robust parsers has improved to the point where it's a superior experience in some regards to the tried and true but fairly unportable "dump structures from memory" approach that seemed to be popular when I was younger.

Tangentially in this category, I think Wuffs is quite compelling too.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: