62 comments

  • somat 19 hours ago

    I love the quake .map format. It is like this glimpse into an weird alternate history. A sort steampunk ascetic to graphics.

    The article touches on this, but for them unfamiliar, the quake .map format is the editable text based format. but it does not use the common method of vertices into edges into faces as the base building block. it uses planes, the graphics primitive is is the three points that define a plane, where these planes intersect are the edges.

    I never dove into the subject enough to figure out if this plane representation was also internal to the compiled bsp format, but I suspect it is. My guess is that it is the natural conclusion when you need a map interchange format for your highly optimized space partitioned engine.

    • cmovq 15 hours ago

      > I never dove into the subject enough to figure out if this plane representation was also internal to the compiled bsp format, but I suspect it is.

      Not exactly. The BSP format stores planes as a normal (3 floats) + distance to the origin + an int that flags axis aligned planes. Which is the representation the engine uses.

      I believe “3 points on the plane” was chosen for the map file so the coordinates could be exact integers in the text file, to avoid precision loss from storing the normal+distance representation. The latter representation uses less space and is easier to work with.

      • Sharlin an hour ago

        Three points on a plane also give you a basis for texture mapping that’s reasonably intuitive to the level designer. I believe this is the main reason for the representation.

      • Maken 8 hours ago

        Now I'm curious. How does BSP encode the orientation of a plane wrt its normal?

        • webkike 2 hours ago

          The normal is the orientation

    • tightbookkeeper 13 hours ago

      The planes are important for collision and occlusion queries.

      And yes. Intersection of planes is a higher level language than vertices and UVs. It pushes more work onto the computer instead of the human.

    • rasz 18 hours ago

      PowerVR supported in hardware something called "infinite planes", wonder if its connected. Afaik no game, program or API ever used it.

  • Llamamoe 7 hours ago

    IMO, an even better tool was the Cube 2 Sauerbraten ingame editor - a combination of octree(e.g. variable-size) voxels spliced with per-vertex heightmaps that let you treat parts of it as terrain, others as cubes, and sculpt others into arches, rocks, spheres or vases.

    It had that same intuitive sculpting feel, but even more powerful and quick to work with.

    • HexDecOctBin 7 hours ago

      > per-vertex heightmaps

      Do you mean per-face heightmap? Like a displacement map?

      • Doxin 6 hours ago

        I assume he means you can move any vertex an arbitrary amount along its normal.

  • jheriko 15 hours ago

    beautiful to see a decent programmer understanding the tech that people at e.g. unity and unreal have just fucked up badly.

  • knome a day ago

    hey, in case the author is the submitter, your title covers 2/3rds of the top line when viewing this from my phone.

  • ahoka a day ago

    You can do much more in Blender and it takes around a month to get to a decent level with it. BSP is just outdated and limiting. If you want to add small details and variance, then just make smaller models and combine them in creative ways, together with decals, texture atlases, etc.

    • cloudwalk9 a day ago

      BSP is a technique for optimizing visibility calculations on convex level geometry. You're still making a 3D model and that's exactly what's stored as part of a .bsp file. So the point isn't BSP being outdated.

      Just Trenchbroom and tools like it have more of a Minecraft creative mode simplicity to them, with click and drag snap to grid rapid prototyping of basic level geometry, and even more advanced geometry and details (including creating slopes and cylindrical structures, rafters, vents, general architectural details), than Blender's out of box generic UX presentation intended for all use cases of 3D design.

      • jheriko 15 hours ago

        its not actually about the PVS although it greatly simplifies those algorithms.

        its actually quite redundant in many ways.

    • amatecha a day ago
      • johnisgood 2 hours ago

        Yeah, GtkRadiant was pretty much sufficient for creating complex maps despite some bugs here and there.

    • badsectoracula 19 hours ago

      You can technically do "much more" in Blender, as it is a full blown mesh editor, but (quake-like) brush-based editors are *MUCH* faster -and easier- to work with. The limits do allow for making some things easier.

      And unless you are targeting vanilla Quake (or a game with similar limitations), you can still use smaller models (and modular meshes) for details, etc, so you get the best of both worlds.

      Also FWIW i don't think Blender is always the best even for such environment props - for some geometry (mainly man-made stuff) something like Wings3D can be faster to work with than Blender.

      In fact implementing brush support was one of the first things i added to my engine's world editor[0][1][2] and adding Wings3D-like mesh editing is something i've considered (i implemented the data structure and basic operations years ago[3], but i'd need to convert the code to use the engine's geometry code and of course implement the editor UI for it).

      [0] https://i.imgur.com/S2VtAn6.jpg

      [1] https://i.imgur.com/RPfG3Ee.png

      [2] https://i.imgur.com/lOhmyoq.png

      [3] https://i.imgur.com/4Zk9Td7.png

    • bogwog a day ago

      They're creative tools. The "better" one is the one that the artist is most comfortable with. I've seen working professional artists who still rely on ancient abandoned software from dead companies.

      • amatecha a day ago

        Years ago I learned about the tools that one of my favorite bands used. At the time where Intel Macs were taking the world by storm, these guys were still using G4 towers in their studio and had no interest in using anything new. I'm sure they moved onto something newer, but who knows how long that took. Indeed, an artist's relationship with their tools takes some time to develop and isn't easily cast aside!

        • 9point6 an hour ago

          There's a good chance this might be down to Apple's constantly changing foundations and the fact that a studio's worth of music software can (especially back then) cost a lot of money to upgrade on top of the new hardware requiring the upgrade in the first place. And that's not going into the case where the company that wrote the software has gone bust.

          Given you mentioned G4, there's a good chance they had recent memory of having to upgrade a load of stuff to jump from OS9 to OSX. The Intel architecture change required another upgrade for a lot of software, so it probably made a lot of sense to try and eek more value out of the previous round of purchasing before going again.

          Hopefully they delayed enough to not get hit rapidly by the changes in Yosemite, Mojave or Catalina which all necessitated upgrades (IIRC, one might have only been some edge cases) or finally the most recent jump to ARM—which still isn't natively supported by a surprising number of DAW or VST vendors.

          On Windows I can run any DAW or VST that's been written since about 2006 natively and can even load up a 32-bit DAW if I want to dust off some ancient project with ancient VSTs that never made the jump to 64-bits.

    • cheeseomlit a day ago

      Blender certainly has many more features, but I've been bouncing off of it for years- every time I try to learn it I get overwhelmed by all the minutia. Trenchbroom just feels more natural, and for lower fidelity quake-style maps its all you really need

    • outworlder 19 hours ago

      > You can do much more in Blender and it takes around a month to get to a decent level with it. BSP is just outdated and limiting.

      You are comparing apples to oranges.

    • overgard 21 hours ago

      I don't think it's about BSP's per say, it's about being able to use Brushes. Current Unreal Engine still supports these I think (it's been a minute since I looked). It can be a nice prototype workflow.

    • cmovq 19 hours ago

      BSPs (or CSG in general) is still present even in modern engines due to how quickly it allows designers to build levels. Even when it’s only used for prototyping prior to an art pass.

      • jheriko 15 hours ago

        not really, sadly, we get the bad tools, but none of the performance benefits because it all gets turned into dumb polygon soup.

        unreal's performance is embarassingly bad. they get their culling backwards. its a masterclass in how to piss clock cycles up the wall.

    • tightbookkeeper a day ago

      You’re not responding to the article.

      > BSP is just outdated and limiting

      - In quake brushes are not just visual, but are also used to solve collisions. Without brushes you need separate “collision meshes”.

      - brush based editors are much faster for prototyping space shapes. Art can always be improved later and is even outsourced. Gameplay is harder to get right.

      - brushes are easier to reason about in processing for auto generating UV coordinates and light mapping

      > just make smaller models and combine them in creative ways

      This is a cost saving choice, not a better game choice.

      What games do you want to play? The ones where the space is tailor made? Or the ones with a lot of copy paste?

      Also if you look at the spaces in the article, they don’t have a lot of clutter anyway.

      • ahoka 17 hours ago

        I’m responding to the article, which says:

        “You can see the frame of the room is made up of four static pieces which I’ve been glued together. This type of prefabbing makes it impossible to add little details or variations into the structure of an existing asset, you need to change the one, or make a new one.”

    • jheriko 15 hours ago

      you can make a BSP from polygon soup too. not respecting the value of convex volumes is one of the most damning problems in modern games. its entirely why they all perform like dogshit.

  • slowmotiony a day ago

    I have a hard time believing an eight year old child was watching Doom 3 developer talks and telling his kindergarden friends about buffer shadows and Carmack's Reverse.

    • pjmlp a day ago

      Back in the 80's having 10 year olds show off Z80 Assembly on their Speccy and C64 wasn't that extraordinary, what was impressive is the ideas many would think of without nothing else besides a couple of books and nothing else.

      I am sure what I am telling here, because I was one of those kids, with whatever we could get from the local library, coupled with Input magazines, and some Portuguese newspapers with computing stuff on fridays (A Capital).

      By 14 I was already into Demoscene stuff.

      EDIT: Naturally it was 6502 on the C64.

      • Y_Y a day ago

        Is there any modern equivalent? If you could control a child's computer access and didn't care about them missing out on tiktok etc what would you do? Of course a refurbed ZX Spectrum is an option, as is Scratch or some other hand-holding environment. I'd be interested to know if anyone is raising tough, rugged, Mel-type hackers[0] these days, and how they're going about it.

        [0] http://www.catb.org/jargon/html/story-of-mel.html

        • vundercind a day ago

          The modern equivalent doesn't look the same at all if you want equivalent motivation.

          We all dicked around with "shitty" computers and learned all the stupid trivia you had to memorize to use them, back then, because that's all there was and you could make your own bad text adventure or crack some commercial game or whatever and your friends might think it's cool, because that was state of the art, or close to it, and anyway you had to get about half-way to being able to program a computer just to be able to run games or play around in a text or image editor. The extrinsic motivation for hacking on some modern C64 clone or what have you is far lower than it was then.

          Minecraft modding is probably the closest modern equivalent.

          • filoleg 20 hours ago

            I agree with your take, just wanted to add Roblox to that list containing Minecraft modding as well.

            Kids create almost full blown games in Roblox these days. Most of what they create is ofc extremely basic and is of poor quality, but they are kids. And the outliers can get pretty insane, in a good way.

          • jdwithit 20 hours ago

            Yeah I think this is a good point. Around ~8th grade I got pretty far into making a Final Fantasy 6-inspired JRPG in QBASIC with some friends. Obviously it was not remotely professional quality. But the delta between it and a "real" game wasn't THAT insane. There's only so much you can pack into little 8 or 16 bit sprites. It's very easy to write a 2D tile based engine, there was a lot of info on the Internet about it even then back in the late 90s. I didn't need to know college level math to do basic 2D rendering and effects. If making a somewhat presentable game in the 90s interested you, it was all pretty attainable with study and work.

            Nowadays, for my own kids, the equivalent would be trying to write... Zelda: Tears of the Kingdom from scratch? Which is like asking them to solve cold fusion based on a middle school understanding of science. It's laughable. Making "old grandpa games" doesn't motivate them. Which is a bummer, because hacking on that crappy QBASIC RPG definitely set me on the path to a lifelong interest and career in tech. (Unfortunately it was never finished, because my HDD died, and the backup I periodically dumped to a floppy was unreadable, so several years of effort were lost. Great early lesson about backups not meaning shit unless you regularly test that you can restore them...).

        • warpspin a day ago

          I am skeptical that this can be repeated at all nowadays the way we had it in the 80ies and 90ies (or even earlier, but I'm an 80ies child, haha). At best with some kind of limited hardware or in some narrow area like writing games. Also, surely not with Scratch. Scratch is, what you give a 5 year old to learn some concepts in my opinion. My children were appalled by it when they became 10 cause it's "baby stuff". At least those kids interested in programming.

          The thing in the 80ies and early 90ies was, that you could actually, as a kid, compete with something professional and have total control over the outcome, if you had a bit of talent in any area. This was unbelievably motivating.

          Where can one person or two people nowadays seriously compete with professionals and have serious control over the outcome? If at all in the area, where you will actually find kids today: Roblox games, Unity games, anything with a finished engine, where they can focus on the content itself because anything else will simply be unrealistically large effort.

          Also, limited retro hardware things might work, I do not know. For me, if I was a child again, they would not work because these are things that are too limited - I would always know there are really powerful PCs with all 3d stuff around. As said above, the fantasy of being able to do anything some software company could do was what motivated me in the 80ies/early 90ies, so I'd rather probably teach myself some game engine, too, because that allows me to live the state-of-the-art fantasy. At least I assume that.

          Another thing old hardware did, by the way, which modern hardware does not, is that it launched people on a programming learning path immediately, if they desired to successfully use it. You could not use a C64 without learning at least a tiny little bit of basic.

          • sumtechguy a day ago

            > I am skeptical that this can be repeated at all nowadays

            For me I think it was more of an access issue that caused me to want to do it. Once you were done with the 2-3 games you might have. You started getting the mags from the library and typing things in and hoping it would work (no typos!). Just so you could get another game.

            Along the way you picked up tons of low level programming. The computers of the time were 'batteries included' usually including some form of BASIC and then an escape into the world of ASM if you knew the right incantations. After awhile you would find hey this programming thing is sort of fun too.

            But today a kid has some access to things like what you point out. But however they also have access to thousands of other games for a very reasonable price. The older systems you better be committed to getting that game you wanted as they were decently priced high enough you had to shell out a decent amount of cash to get it. With free to play and thousands of low priced games plus the massive catalogs of older systems. Getting a game is now 'easy' and cheap.

            On my old computers apple2, c64 and ti994a the prompt to launch things was a programming prompt. With the GUI world there is no prompt just files and icons. Getting an IDE setup on most modern systems is not hard but it is an extra step (and fiddly with some of them). You are then presented with a blank canvas but you have to know how to fill out the form to get it to do anything at all.

            Could we replicate the old systems? Totally. Would anyone actually use them? Not so much as to 'get things done' the GUI is way better. There is a step missing if we want to replicate what we had. But is 'what we had' the right way to program? That I am not convinced of. Pretty sure if I said 'yes' that would be my bias of using it that way showing. We would have to have a different way that still brings people up step by step we had but fits into the current landscape of computers.

        • johnnyjeans a day ago

          I sincerely doubt it.

          One of the more underexamined consequences of computers being so ubiquitous and widespread is how it's affected child rearing. Any parent or anyone who works with children knows one of the most important parts of child rearing is socialization. It's imperative that your child gets along with other children, always has been. Today, with children being given access to social media, that means that your child too will have to be given access to social media in order to fit in. The reason being that this is what kids will talk about amongst each other primarily, it will constitute much of their interests early in life.

          The problem of course with this mandatory exposure is that it's vampiric. The odds of getting a kid into 6502 assembly after they've been exposed to the monoamine explosion of trite garbage like TikTok may as well be an impossibility. Deprive them of that explosion... they'll probably not have a good time with their peers. Social ostracization will harm their personal development, and they will experience it if they can't yap about the latest memes with the other snotlings. They'll grow to resent you for making them the weirdo with nil cultural knowledge.

          It's a rather worrisome situation, honestly. The best route to getting kids into programming, in my opinion, is through Roblox or making Fortnite custom maps. It's stuff they can share with their friends in a medium that they'll enjoy and think is cool. It fits in with their cultural motions. If you do a good job of encouraging their experiences doing so and instilling a hunger for more and deeper knowledge, eventually they'll move on to greater horizons.

          I say this as someone that's absolutely loathe to do any of this. I would want to raise my child on Plan 9. Teach them how to write 6502, how to write lua, how to write C. But it's just not how the world works anymore.

          • KerrAvon a day ago

            The answer is to find like-minded parents and form schools with their kids. This is hard to do, but it is the only real answer.

          • tiahura a day ago

            It can, you just have to have the right wife.

        • wing-_-nuts a day ago

          I highly recommend hooking your kid up with pico-8.

          It's a simple little 'fantasy' console with tons of tools to make gamedev streamlined. It's really caught on fire with the gamedev community and you can tell there was a lot of pent up creativity out there that was sick of the complexity of modern gamedev and just wanted a tight little environment to make simple indie games with. I'm not doing a good enough job describing it, but the website is below and check out the youtube overview.

          https://www.lexaloffle.com/pico-8.php

          https://www.youtube.com/watch?v=uXveyqOYB5w

        • Caius-Cosades a day ago

          Well there probably would be more those kind of genius-autist-savants if children were allowed and encouraged to pursue their interest. Instead what usually happens when and if a child becomes obsessed with some topic is that instead of allowing child to pursue what he is passionate about by guiding a child towards a more constructive path(if necessary), he gets penalized for it. Repeatedly and as often as it takes for the child to stop dreaming. And that is such an incredibly stupid waste of human resources.

      • pryelluw a day ago

        Yep, same here. I didn’t know what I wasn’t supposed to do so I tried whatever. Spending hours just typing nonsense until something worked. Getting the monitor to display different colors was certainly exciting! I never made it into demos but sure did spent way too much time poking around my c64.

      • warpspin a day ago

        Dito. Started c64 scene at 12. You had to not talk about your age back then, though.

    • badsectoracula a day ago

      I started programming at 7, i was certainly telling my friends about all the random stuff i barely had a smidge of understanding while trying to program simple games myself - i could barely move a smiley face (DOS ASCII character 2) on screen to collect hearts (DOS ASCII character 3) and yet i was certain i could make a game like Prince of Persia once i figured out how to draw lines on screen with Turbo Pascal's BGI.

    • amatecha a day ago

      hmmm, I don't feel too skeptical about it - I think it just sounds more impressive in hindsight where it can be described in full clarity (and probably underestimating how much was picked up in the months/years afterward). I was writing HyperTalk around the age of 9, after learning the "secret" command of "set userlevel to 5" [0], although it was kinda difficult without any documentation (I just opened other existing Stacks to see how stuff was done). If you grew up around computers and had a knack for it, well, a youthful brain just soaks up everything it's exposed to, really.

      This actually reminds me of how valuable it can be to expose kids to complex/depthful things from an early age -- some will dive right in and embrace it, and potentially enjoy a rewarding experience with the particular subject.. For me it was computers, and at the time I really couldn't get enough.

      [0] https://hypercard.center/HyperTalkReference/Set-the-user-lev...

    • bogwog a day ago

      I started when I was around 10, and made my first "game engine" in C++ at around 12 or 13. If anything, doing this type of thing when you're that young is easier (unlimited free time, and young brains probably learn things more easily). The only real barrier is interest/motivation.

      • colechristensen a day ago

        >The only real barrier is interest/motivation.

        My barrier at that age was just information. Obviously things have become much easier now.

        Having windows 95 as your first OS made this particularly difficult and the Internet was what it was at that time.

        It took me years to find the right questions to ask and the right information. What took me several years to figure out I have tought someone in an afternoon. (getting from 0 to a short roadmap to something functional).

        • amatecha 18 hours ago

          Yeah, I always wished so badly I knew an adult who was a skilled programmer. I borrowed books from the library but I would always hit a wall so early on, not being able to make sense of the concepts (and being on a Mac, which none of the books provided a compiler for). Looking back I know for a fact I could have grasped the concepts if they were explained a little more "gradually" for me, which a mentor-type person absolutely could have done easily.

          • ShroudedNight 16 hours ago

            Without mentorship / guidance, how are you supposed to know that K&R and / or Petzold (and maybe A. S. Tanenbaum?) are where it's at, and everything else is arguably a waste of your time? Almost every programming book I encountered seemed intent on making the computer appear mysterious and esoteric which did not help me feel empowered to explore.

    • sorbusherra a day ago

      I don't know...When I was kid we used to talk poking memory addresses for cheats while playing c64 games and we were all 9-11 years old. Kids do darnest things.

      • amatecha a day ago

        true, that reminds me of my friend hex-editing his savegame files for WarCraft 1 in DOS - he would have been 10 or 11 at the time.

    • wrsh07 a day ago

      Even today a friend's kid has been programming since younger than eight - watching YouTube videos about game development etc

      I think you'd be surprised at what kids are able to do at what ages if they're allowed to work productively towards useful goals

      Watch a video of some Montessori 3 year olds.

      • bobim a day ago

        Montessori has nothing to do with this, my triple experience is that kids figure out the method allows them to derp around, and they will derp around. The school tells nothing as keeping the cash coming in is more important than kids education.

        A passionate kid is passionate, the method is not making him passionate.

        • wrsh07 19 hours ago

          The friend's kid isn't a Montessori kid

          He just likes programming. He likes building stuff. One of his best friends is a kid his age who lives across the country. They just like being productive.

          At the end of my previous post, I was trying to dispel this idea that kids under ten are incapable of doing things independently. That they're incapable of engaging in things like an adult. If a 3 year old can grocery shop and make a cake, an 8 year old can watch a game dev talk. Can be obsessed with game engines. Can learn to juggle.

          My niece wrote a blog post years ago when she was under ten, and the comments she got were "your parents must have written this for you, you aren't capable of having done this" which is absurd. Don't act like kids are incapable just because the ones you see are incapable.

    • foldor a day ago

      8 years old is well past kindergarten aged. It's the second grade around here. It's still young, but the maturity difference is huge.

    • shpongled a day ago

      I booted a hobby OS I had written in C on the family PC (off of a floppy disk!) by the time I was 13. Kids can have a lot of free time to mess around with this stuff - I would love to see what I could do now with a whole summer off.

    • pzduniak a day ago

      Eh, you're overestimating OP's statement. I think they're roughly my age and at eight I was busy figuring out Win32 APIs and DLL imports in Object Pascal to make _rad utility programs_. I probably would've immediately gone into game modding if not for the fact that I was using a late 90s Dell notebook that had like 8MB of VRAM :) Two years later I had a bunch of game servers running entire custom gamemodes implemented in LUA with other kids _loving it_.

    • pdntspa a day ago

      I was pulling similar shit around that age, armed with those old illustrated "How Computers Work" books. This kid just got into something nerdier

    • craftkiller 21 hours ago

      I started programming when I was 8. Certainly not to the point where I would understand Carmack's reverse and buffer shadows but there are people much smarter than me and information has never been more available than it is today so I don't think its completely implausible.

    • brcmthrowaway 11 hours ago

      It's called having wealthy parents

    • jheriko 15 hours ago

      i don't.

      although the magic of carmack's reverse to me is how it was a passing thought for me in a gamedev book written by an over privileged silly valley asshat in my teens... and turned out to be gold.