[HN Gopher] Black Art of 3D Game Programming (1995)
       ___________________________________________________________________
        
       Black Art of 3D Game Programming (1995)
        
       Author : stefankuehnel
       Score  : 111 points
       Date   : 2023-09-03 08:03 UTC (1 days ago)
        
 (HTM) web link (archive.org)
 (TXT) w3m dump (archive.org)
        
       | ivolimmen wrote:
       | I owned a copy of this book. I tried a few lines of code but at
       | that point in time it was too difficult for me to fully grasp it.
       | I was still programming in basic at the time and the leap to a
       | different language was too big. I do regret throwing it away...
        
       | i_c_b wrote:
       | Andre LaMothe's prior book, Tricks of the Game Programming Gurus,
       | was literally life changing for me.
       | 
       | I was in my late junior or early senior year of high school when
       | it came out. My stepfather had a 386/20 and then later a 486/33,
       | a Borland C compiler, and a generic 700 page "Learn C" book at
       | home, and I had worked all the way through the book. But I
       | couldn't for the life of me figure how in the world to bridge the
       | gap between the extremely slow, "high res" 16 color graphics
       | libraries that came with the compiler, on the one hand, and what
       | Wolfenstein and Doom were doing, on the other, both of which I
       | was utterly entranced by.
       | 
       | And then I saw LaMothe's book on a random shopping trip to...
       | Software Etc, I think? I'd never seen anything like it. And I
       | knew I had to have it, immediately.
       | 
       | After getting that book, I was diving headlong into relatively
       | fast VGA C programming in mode 13h (320x200x256 color). I spent
       | the afternoons of my senior year of high school writing
       | relatively fast texture mapping routines and trying to get full
       | screen 30+ fps interactive scenes and levels running, which I
       | think I mostly did. I had to write my own paint program, too, for
       | 256 color palettized textures. It was thrilling.
       | 
       | Thanks largely to my time with that book, later when I was
       | introduced to the internet the first week I started a Computer
       | Science program at college, I was primed to dive into all the
       | awesome C open source game libraries and tools (like Allegro and
       | DJGPP) that I found online, and I was making commercial games and
       | working in the guts of the Quake and Quake 2 code bases two short
       | years later. (The book and then the internet were not, however,
       | great for my college career)
       | 
       | I know there are corny parts of the book, and maybe things that
       | weren't as cutting edge as they claimed to be. It doesn't teach
       | you how to actually write actual Doom, of course.
       | 
       | But prior to the widespread roll out of the internet, it's hard
       | to get across just how inaccessible most of the knowledge in the
       | book was, at least for a high school kid like me. It really was
       | like turning on a light switch when I got it. Sometimes something
       | is just at the right place at the right time for someone, and
       | that's what that book was for me.
        
         | herodoturtle wrote:
         | Loved reading this, thanks for sharing.
         | 
         | And a shout-out to mode13h. In my case it was BBS and Denthor's
         | tuts that changed my life.
         | 
         | Good times.
        
           | pixelpoet wrote:
           | As someone who grew up in similar circumstances in the 90s
           | but in South Africa (no home internet, no books, no friends
           | no help at all) and then finally found Denthor of Asphyxia's
           | tutorials (as well as PCGPE and eventually Huge), I was super
           | gutted to find there wasn't really a South African graphics
           | coding scene, it was basically just him :/
           | 
           | Mode 13h changed my life and set me on the course to being a
           | graphics coder today (along with an email from John
           | Carmack!), it's been such an amazing ride with hardware
           | getting exponentially faster every year (RIP to that). I
           | ought to get mov ax, 13h; int 10h tattooed along with
           | 0xa0000, 0x3c8, 0x3c9 or something :)
        
         | gdubs wrote:
         | I have such nostalgia for that particular moment in time, and
         | for me it was the Renderman Companion and Advanced Animation
         | and Rendering Techniques. The web was still small, and the
         | information density contained in Borders Books or Barnes &
         | Nobel was just completely immersive. Lots of snowy Saturday
         | trips to the mall with my parents and negotiating the purchase
         | of another hefty computer book.
        
         | SnowProblem wrote:
         | Very similar story here. I was in middle school when the
         | follow-up Tricks of the Windows Game Programming Gurus came out
         | [0]. I read it cover to cover and proceeded to buy as many
         | Premier Press books I could get using money I'd save from doing
         | chores around the house. This wasn't pre-Internet but the best
         | material was by far still in books. My dad would pay $5 per
         | hour so if I worked hard I could buy another book after a
         | weekend of yardwork. Those middle and early high school years
         | were incredible. You could still understand the cutting-edge
         | and a single person could still make something big like
         | RollerCoaster Tycoon or Doom. I made a bunch of games,
         | isometric ones, worlds in D3D and OpenGL, physics sims, learned
         | CS algorithms, made pixel art and 3d models in 3ds max, and
         | even made my way to a game developer's conference as an awkward
         | teenager. The only downside to all this is it pulled me away
         | from schooling. I probably could have gone to a better
         | university and had an easier time the first few years of career
         | had I put just a little more effort into classes, but that's
         | life. No regrets.
         | 
         | [0] https://theswissbay.ch/pdf/Gentoomen%20Library/Game%20Devel
         | o....
        
       | NBJack wrote:
       | Oh, man, the nostalgia. I remember borrowing this. It taught me
       | the basics, mode 13h, direct memory access (0xA0000000 anyone?),
       | palette swaps, the works. I remember getting a wave file extract
       | from Duke Nukem 3D playing in my primitive cyclic buffer.
       | 
       | I never went in to game dev, but I did learn a lot from the
       | experience.
        
       | creeble wrote:
       | Andre LaMothe, my counterpart writer for Waite Group Press. I
       | wrote "The Black Art of Windows Game Programming" in 1994. Mitch
       | (Waite) loved those "Black Art" titles.
       | 
       | Edits for spelling and year, which I'm still not sure about.
        
         | digitalsin wrote:
         | Man I LOVED the Black Art of Windows Game Programming! I was in
         | high school when that book came out and I grabbed it as I was
         | curious about game development and development in general.
         | Although it was over my head at the time, 25+ years later into
         | my development career and I credit this book in having had a
         | huge impact on that as it really furthered my interest in
         | programming. Thank you!
        
         | b3d wrote:
         | Not to speak ill in any way of your guys' works, I really enjoy
         | these books for their nostalgic qualities - both LaMothe,
         | yours, as well as a few other ones like the RTS Game
         | Programming (1997?) from one of the AoE developers. I have a
         | physical collection of majority of the "greatest hits" from 90s
         | and early/mid 2000s - mostly Engine/Graphics type stuff. It's
         | nice to read and see how people solved issues having fewer
         | abstractions and layers than we do now, potentially solving
         | things "on the fly" as it were, not really knowing the One True
         | Way but making things work one step at a time all the same. In
         | hindsight, these books were written at a time where hardware
         | acceleration was taking off, so it adds to the nostalgia
         | somewhat.
         | 
         | The most recent holy grail of a book for me has been Luna's
         | D3D11 tome. I haven't kept up since.
        
         | mysterydip wrote:
         | Thanks for giving me (and others) such a great/fun resource! I
         | recall at least in LaMothe's at the end there was a contest to
         | make the best mod/improvement off of the book's engine. Do you
         | know if those actually happened and if the winners are
         | accessible anywhere?
        
       | massifist wrote:
       | This brings back some fond memories. I still have a copy of the
       | book "Tips and Tricks of the Game Programming Gurus", though it's
       | not in very decent condition. It has this ray traced image on the
       | front cover (with a crazy monster) that is very characteristic of
       | the early 90s. Though, I could never help but notice what
       | appeared to be an error on the staircase banister where it looked
       | like the normals were facing the wrong way. So it looked hollow.
       | Or maybe the (object's) matrix was wrong. Anyway. The book really
       | had me hyped up to create some virtual worlds. Like DOOM.
       | 
       | I learned a lot from the book but some of the topics where a
       | little too advanced for me at the time, as I was still learning C
       | and grappling with x86 assembly language.
       | 
       | However, I rediscovered the book several years ago and
       | implemented something similar to the ray caster (which had really
       | impressed me at the time) in DOSBox. I tried to optimize the
       | algorithm and add a few enhancements. It was lots of fun! A
       | genuine (early 90s) retro experience! I think I even had to fire
       | up Turbo Debugger to solve a few problems.
        
       | kevinsync wrote:
       | I still have this on my shelf and worked through it cover to
       | cover more than once in middle and high school in the 90's.
       | LaMothe was a massive inspiration and, while I'm not totally
       | convinced that these types of project-based instructional books
       | are as relevant in the 2023 world of Github / blogs / etc, I
       | really miss being walked through a complex piece of software from
       | beginning to end with commentary and supporting code in a giant
       | book that you can touch and feel and flip through the pages of.
       | 
       | Also very much worth shouting out Mark DeLoura's 'Game
       | Programming Gems' series -- I'm not sure how it even happened,
       | but I got a chapter published in the first volume while being a
       | 17 year old kid who had zero professional experience in any
       | industry of any kind lol (I just replied to a call for
       | submissions on Gamasutra, was told 'ok code it up and write a
       | paper' and I did. And they printed it!)
        
         | endgame wrote:
         | > I'm not totally convinced that these types of project-based
         | instructional books are as relevant in the 2023 world
         | 
         | I got a lot out of Crafting Interpreters, typing in the
         | bytecode VM by hand and working slowly through the book.
         | Stitched a lot of things together in my mind which previously
         | had only been half-understood research papers.
        
       | sourthyme wrote:
       | I grew up with this book in elementary school. I remember
       | learning how complicated 3d graphics were at the time and
       | eventually helped me with graphics in university.
        
       | ImPleadThe5th wrote:
       | Is this book still applicable? Anybody have some other good
       | computer graphics textbooks to recommend?
        
         | richardjam73 wrote:
         | If you want to make a game in 2023 you should just use an off
         | the shelf game engine. If you want to understand how older 3D
         | games were made then this will help. If you are writing a game
         | in DOSBox with an old C compiler then it would be useful. Some
         | of the book will deal with issues that machines of the time had
         | and no longer exist so you probably would need to discount
         | those for modern machines even if you wanted to write a
         | software renderer.
         | 
         | Examples of the stuff that doesn't apply today are
         | 
         | * Graphics using VGA
         | 
         | * fixed point math for speed
         | 
         | * input output routines under DOS (keyboard, joystick, mouse)
         | 
         | * Sound under DOS
         | 
         | * Networking under DOS (null-modem)
         | 
         | * DOS interrupts
         | 
         | * 32bit stuff
         | 
         | * 80387 floating point
         | 
         | The parts of the book that discuss the maths are quite good.
        
         | [deleted]
        
       | projectileboy wrote:
       | This pops up on HN every few months, and I don't even mind. At a
       | minimum, read the last couple chapters on the development of
       | Quake. So fun.
        
         | wk_end wrote:
         | Pretty sure you're thinking of Abrash's Graphics Programming
         | Black Book (understandable). Abrash was a developer on Quake
         | and the GPBB has a couple of chapters on it at the end IIRC.
         | 
         | Whereas: this book was written by Andre LaMothe, who did not
         | work on Quake. It predates Quake and AFAIK doesn't mention it.
        
           | projectileboy wrote:
           | Oh no you are right! My mistake - my first "real" programming
           | job was at a game studio in 1997, and I devoured both of
           | these books (well, and more, including Expert C Programming
           | by Peter van der Linden). Great books.
        
           | pengaru wrote:
           | Also worth noting is Abrash's Black Book is pretty
           | specialized for the x86 PCs of the 90s. It's not really all
           | that applicable to game programming today, unless you're
           | deliberately doing retro development for 486/pentium class
           | machines w/VGA.
        
       | jbverschoor wrote:
       | This was a very good book. Together with the code on the cob
       | series by Chris Hargrove of 3DRealms, it gave a great insight
       | into 3d engine programming, account, memory management etc
        
       ___________________________________________________________________
       (page generated 2023-09-04 23:00 UTC)