16/12/2006 @21:42:16 ^23:12:47
it would be oh!
so nice
I made an advent calendar out of bottles of alcopops
Not that much to write about. Very few new maps played, and anyway I'm kind of sick of writing reviews of them. This is mostly because it takes ages as I feel compelled to write far too much.
The reason I haven't played many maps is that I've been coding something called LineInfo. It's a rewrite of the line specials processing system based on a big table of function pointers and data. It's very much neater than huge switch statements full of the same code repeated over and over again, and also allows the easy solution of two major classes of ZDoomisms. Of course complaining about ZDoomisms is 50% of my reviews so I don't know what I'll be able to say now!
Rewriting the line specials processing is a good way to find lots of hilarious bugs in it. I've already written about the raise ceiling to highest adjacent special. Also:
- Revenant and mancubus missiles can set off monster-activatable walk triggers like lifts. Instead of doing something sensible like testing for any projectile type using the thing flags (as teleporters do), they tested for a list of specific object types. These are all the projectile types in Doom, but they never updated it for Doom 2.
- It's already well known that monsters can open manual doors, but only if they're not marked "secret", i.e. show as a one-sided wall, on the automap. Boom generalised doors are similar, but the Boom developers just copy-pasted the code three times, and didn't check it. So if a monster walks over any walk trigger-activated generalised linedef that is set up to allow monsters, it won't work if the line is secret. This is why you don't copy and paste code.
- Boom's generalised crusher linedef types were completely missed out of the function that deals with walking over special lines, so none of the walk trigger type generalised crushers will work.
- The angle at which a linedef-controlled wall scroller scrolls at is controlled not by an off-map control linedef as you might expect, but the actual linedef on the map itself. So for example a line facing south on the map will scroll up. If you want it to scroll down and to the left, as far as I can tell, you're screwed, unless you stunt something up with sharing sidedefs between lines I suppose.
I've contributed a couple of bug fixes to PrBoom and PrBoom-plus, in particular changes to the build system, which uses autoconf. I was pretty pleased that it appeared to work, as autoconf can be very difficult. It's not conceptually difficult but there are an awful lot of macros and things to know and it seems very hard to work out the right way to do what you want to do with it.
I finally know exactly why monsters can open locked doors, when their reverse side isn't locked! (e.g. when speedrunning map27 you use the archvile to open the red door at the end) The monster tries to move by a number of map units equal to its speed, every tic. If this move is blocked by any lines, and any of these lines are special lines, it will unconditionally activate all of them, including the reverse side of the door that isn't locked. Furthermore it doesn't do a side check, so it can activate lines that are facing the wrong way. Pretty weird huh?
I'm also going to do map28 for CC3. For this I'm going to finish off Sector 14, the map I started after I finished Elixir. I decided to do this and started work months ago, but didn't say anything in case I changed my mind. However, people were claiming all the free slots so I thought I should get one before they ran out. Please note the map's name has been changed to Token Archvile because the Sector 14 joke is too old now.