New maps for Quoth 2.2

The first new map for Quoth 2.2 is out! Thanks to sock for his latest map, Metal Monstrosity. This release has been designed to work with the launcher that comes with the latest version of Quoth, so you can go check out all the detail on the Map Packs page or follow the earlier link to find the thread on func_ and the regular install instructions.

Also on the Map Packs page is a blast from the past – the Lost Chapters is back! This is a map pack that was created for the predecessor to Quoth, which has been ported across to run in 2.2 and to use the launcher. So if you’ve never had the chance to play it or want to indulge in nostalgia, head over to the Map Packs page and check it out!

Easily fixing the EndFrame function

A third, mercifully brief post on an alternate way to fix the EndFrame – upgrade the compiler! Spike posted that the daily builds of fteqcc fix this issue, and they’ve been hidden away at:

Apart from fixing the assign to field issues from the last post there seem to be some new features like type checking on function assignments, so go check it out. This lets us get rid of a lot of the workarounds from the bug investigation post, but since one of the bugs was in my code, the full working EndFrame code follows… Continue reading

Fixing the EndFrame function

Today we’ll be looking a compiler bug, and I don’t want it to sound like I’m airing grievances when we do. The compilers that coders have created for QuakeC over the years are awesome tools, they’ve added loads of new features, even added optimisation passes. One of the under-appreciated things they’ve done is improve the syntax and parsing of QuakeC – from tiny changes like making spaces between operations optional, to big changes like allowing nested function calls instead of using a temporary variable between the calls. So I love the work you guys have done, and this report is so you can keep on helping mod authors. Continue reading

Creating the EndFrame function

Suppose that a group of entities in our mod are generating a massive excess of sounds, causing packet overflows and clipped audio. We can restrict the group to only play one sound per frame, but if we simply approve the first sound request then the later entities in the group will never get to sound. It might be better to wait for all requests and choose the “loudest” one, and it is possible to keep track of the loudest request so far this frame. However you can’t determine the loudest noise until all the entities think, and once each entity think has run the QuakeC is over for the frame.
Continue reading