Ladies and Gentlemen, We Have an Engine

RMQ forked FitzSDL / Quakespasm on 05/31 2010.

From now on, this engine is our release target, as well as Darkplaces. Features we need are going to be added. One of the first issues to be tackled is the 4096 x 4096 map size limit. Another is the addition of CSQC support.

For the longest time, we were hoping to not do this. The pros have outnumbered the cons, though. We can’t reasonably support any old engine out there, and we can’t reasonably expect that engine coders will give us what we need.

With this decision, we are putting a load of extra work on our shoulders, but are also gaining independence. We can now simply implement the changes we need in the engine, instead of trying to get all of Quake to do what we need.

In short, we are following in the footsteps of Nehahra; the road is long and arduous, but we will succeed.

Thank you to metlslime, Baker, sleepwalkR, stevenaaus and sezeroz for their engine coding efforts. Let’s wish the new engine all the best.



18 responses to “Ladies and Gentlemen, We Have an Engine

  • mh

    I’ll definitely mod my engine to also support this. šŸ™‚

    Can I suggest though that you change the default protocol version so that we don’t have 2 incompatible protocols using the same version number.

  • kneedeepinthedoomed


    There shouldn’t be that many changes really – at least not to the renderer and input stuff…

    It’s probably mostly going to be the last remaining limits that we’ll remove, and a couple extensions etc.

    And yes,

    PROTOCOL_RMQ = 999;

    I changed MSG_WriteCoord and MSG_ReadCoord to take an additional argument (the protocol), which I got from Darkplaces. Both now check for PROTOCOL_RMQ and point to the already existing WriteCoord24 and ReadCoord24 functions – so the effective limit on map size is now +-32K which should be enough for even the biggest singleplayer maps. Smaller than DP, but enough for us (and enough for any real-world map, I would say).

    PROTOCOL_RMQ otherwise is simply piggybacked on PROTOCOL_FITZQUAKE, so to speak. It is protocol 666 and then some, hence the number – 999.

    With your level of skill, what takes us months will probably be small game to you. šŸ™‚


  • kneedeepinthedoomed

    And also, the singleplayer demo scheduled for fall this year will probably NOT require the RMQ engine (endearingly named after the project, for lack of a better idea).

    “Remake Quake” is a pretty blunt name by itself, I guess. We should have chosen something fancy like “Nocrenimicon”. Ah well, too late now. šŸ˜›

  • LA

    Why not just “Remake Engine”?

  • kneedeepinthedoomed

    It’s not remaking the engine on the same level as RMQ is remaking Quake, I think.

    I thought about ReEngine, but that also implies that we’re striving to remake the Quake engine, which we aren’t. This engine is born out of need, not out of the idea to make a second Darkplaces.

    Ideally, Quakespasm (or Fitzquake) will eventually incorporate all our changes so this “helper engine” can be trashed.

    And as to why we aren’t simply using Darkplaces, well, half the team is mappers who love their Fitzquake. So this will have to do.

    It’s really something we do because there is no viable alternative, not because we love engine coding.

  • kneedeepinthedoomed

    Raised MAX_CHANNELS to 1028;

    raised MAX_DYNAMIC_CHANNELS to 512.

    Broken by e1m3rq. Same as with the candles (prepare to raise your static entities limits, engine coders (except LordHavoc, who did this already) – 1024 would be a good number).

    Interesting trivia: RJ’s latest, e2m6rq, breaks the following limits according to QS:

    signon buffer, faces, marksurfaces, clipnodes, models, sounds, lightmaps, static entities, and edicts.

    RickyT23’s e2m1rq breaks:

    signon buffer, faces, clipnodes, marksurfaces, visleafs and lightmaps.

    I think it is a safe bet that RMQ won’t run in DOSquake. I’m sorry, leileilol.

  • mh

    Would infinite static entities be enough? šŸ˜‰

    (Did this YEARS ago…)

  • kneedeepinthedoomed

    I guess šŸ™‚

    Quakespasm’s limit for static entities is 512, and I might manage to break that – 428 and counting.

    I looked at your code, and your solution is pretty elegant.

  • mh

    So use it if you want to then. šŸ™‚

    To be honest, while much of DirectQ is not usable for this engine (non-portable/etc) you’re naturally free to grab whatever you want or need from it, and I’ll gladly help out with any questions you might have about the implementation.

  • negke

    Ok, then. Good that’s settled. Though I still hope those giant maps are exeptions in RMQ, not the rule. Especially (but not exclusively) in regard to overall development time.

    Looking forward to the next demo – but fall is far…

    And, yes, the font size of the comments is too small. šŸ˜›

  • gb

    Most RMQ maps run in Fitz 0.85 or Quakespasm. Not sure about older engines…

    I can’t promise anything, but the demo map might well stay under 100 monsters and within reasonable limits. It’s one of the smaller maps in vanilla Quake, too.

  • negke

    “Most” maps, hm… If it doesn’t run on Fitz 0.85, you should probably reconsider your goals, heh.

    What’s the status on the third episode? It seemed pretty far when I last saw it (which was, like, a year ago?).
    Are you aiming for episodic releases (finish one and release it to have it out of the way) or are the mappers working on randomly picked levels from all four episodes?

  • negke

    Oh, right. You mentioned the +-4096 limit, that explains it. Though, really, if a map requires more space than a 8192 square, it’s more like there’s something wrong with the design ideas – “epic” works both ways.
    Keep Ricky on a leash! šŸ˜‰

  • kneedeepinthedoomed

    I think +-4096 is a pretty arbitrary limit, really. The code for higher map size limits is already in Fitzquake 0.85, I don’t know why metlslime opted to not include that in protocol 666. That was a mistake in my opinion – Darkplaces users probably laugh at the fact we’re even discussing that, since DP supports WAY, WAY bigger maps.

    It’s simply not an issue; I don’t think you can measure the quality of a map by its running in a certain engine… Fitz 0.85 was an important step, but compared to darkplaces or FTE it is just too limited. Hence we’re augmenting it.

    Some of Fitz’ limits simply exist because no one usually broke them before. But when you have new static entity types like candles etc, and start scattering them around maps liberally, 512 is simply too low a limit. Same goes for maps that use lots of custom ambient sounds, which hasn’t really been done in Quake until recently. RMQ includes fx_sound and fx_ambientsound entities from Extras, which allow you to put sounds wherever you want them. You’ll notice recent games use a lot of sounds to create immersion, DOOM 3 being a prime example. So, e1m3rq recently ran into the MAX_CHANNELS limit of Fitz 085, which is rather low compared to other engines. Suddenly, my ambient sounds stopped playing for some reason. MAX_CHANNELS was the culprit.

    It’s these types of limits that are a problem in Fitz 085, since it wasn’t made with things like RMQ in mind – lots of new static entity types, lots of custom ambient sounds, and simply big maps.

    Outside of the mapping community, I think DP is the standard, not Fitzquake. The reasons are pretty clear – a large set of extensions allowing for new gameplay elements and effects, good CSQC support, really high limits and active development (Lord Havoc recently made a fix very shortly after I broke DP’s static entity limit, and a new DP version was available literally minutes later).

    The third episode is roughly layout complete until e3m5, as far as I know. e3m6 is existing, but hasn’t been worked on for a while; the source to e3m7 was lost but AFAIK there is a new plan for it. All mappers should check their sources into SVN regularly, really, and the head level designers are all doing so. Losing map sources sucks.

    I don’t think there will be episodic releases. Episodes 1, 2 and 3 aren’t really that far apart actually; rjthorne has made huge progress in episode 2, and I have made quite some progress in episode 1 after spending lots of time simply getting better, heh.

    Episode 4 is coming along more slowly, but a few of its maps are being worked on as well. I think it was the last episode to get off the ground, but there is a plan for it now.

    Directors are working on their episodes, and additional level designers are working on single maps, like RJ directs episode 2 and is doing most maps, including the key ones, with a lot of progress lately, and Ricky is doing two maps of it IIRC.

    Looks like episodes 1 and 3 will be done entirely by gb and ijed, and episode 4 will probably end up having several level designers doing a varying amount of maps each, with the director being more in a coordinator role (three people working on it so far).

    I think the project has reached a sort of break-even point a while ago, switching from adding lots of features to mainly content generation.

    New features are still being added every week, though. We just added two great new enemies modelled by Madfox, a host of new entities, and three of us are doing mapmodels and static entities by now. Several people are doing textures. About four to five people are actively coding for the project, including two really good coders.

    I think we’re probably the strongest team in the community, even though we largely stopped talking about it on func_msgboard etc.

    I’ll see if I can get a few new screenies, and maybe a couple very short videos (don’t want to give too much away).

    Next demo will only have one of the smaller SP maps, but hopefully also a couple Quoth-style testmaps to display a lot of the features. As well as .def and .fgd files, from which you should be able to learn most of the capabilities.

    More is cooking. Some very nice stuff is still in the pipeline. Including the multiplayer patch XD I should really reserve a couple hours to get that released, it is practically finished and includes stuff like Quad drop and Dash (like in Warsow – bots do it, too!).

    And I should increase the friggin’ text size in the comments. I know I can use a custom stylesheet, I only need to sit down and do it.

  • kneedeepinthedoomed

    Turns out I have to pay 14 bucks a year just to raise the text size in the comments, which I find a bit … anyway, I opted to change the theme instead, and it should be a bit more readable now. At least the contrast is better.

    Also looks more Quakey.

  • negke

    I see. Backward compatibility is good, but, indeed, with a large-scale project like this, breaking free from the classic limits isn’t a bad thing, maybe really necessary. Like you said, it didn’t hurt Nehahra, either. And, since there’s a Fitzquake port, I have no worries – mind you I do acknowledge DP for its technical merits and LH’s dedication, but I wouldn’t want to be forced to use it with no alternatives because of its slowness and clunkiness in regular use (if you know what I mean).
    My 8192 was more of a hint at my irrational fear of RMQ turning into a second Warpspasm..

    Good to see the project is still going strong. More and and new screenshots would be nice, yes (even WIP ones – this is a dev-blog, after all). And maybe a list of all contributors?

    Episode 4: Heh, I can see why. Probably the same when id made the game. Or they just dumped all maps that didn’t fit elsewhere there. Any progress on E4M6? You got me somewhat intrigued when you brought it up back then…
    E4M7: I hope it’ll be along the lines of Zwiffle’s rmx version (thematically), blue bricks and red bloody bones… The second map is kind cool, too. Ah crap, I’ll just replay the fourth episode right now! šŸ™‚

  • kneedeepinthedoomed

    Yeah, we didn’t go straight for Darkplaces because too many people practically can’t live without Fitzquake. Hence, this engine is a compromise. Maybe it will be obsoleted in the future…

    Second Warpspasm: I think there’s not really a danger of that, realistically. ijed’s maps are gorgeous though, but don’t tell him I said that. šŸ™‚

    Contributors are roughly listed on the About: page, most active since the beginning of this year have been ijed, rjthorne, Ricky, Lardarse, Madfox, Supa, onetruepurple (playtesting) and me. We technically have more members, but I’m unsure about the status of some.

    I recently said jokingly that more people have left RMQ than stayed with it. The core is intact and intending to finish this, though. There has always been fluctuation at the fringe.

    The following maps have actual brushwork done:

    e1m2/3/4/6/9 (7 was merged with 6, 9 is new)

    e2m1/4/5/6 (2 has brushwork by Zwiffle, who left though; 7 was just claimed by RJ)

    e3m1/2/3/4/5/6 (7 was lost but I’m pretty sure ijed plans something for it)

    e4m1/2/3/5 (unsure about 8 atm)

    dm1/2/4/5/6/7/8/9 (8 and 9 are new)


    e4m6 is assigned to myself atm, as is e4m5. If you’re interested, maps can always be swapped and pushed around (and always have been). 5 has some brushwork already. I’m thinking to sign up for 7 as well, because 5/6/7 might become a “unit” (not all episodes use the traditional model of progression – there have been plans for hub system type stuff and recently also for even weirder progressions).

    Lardarse is the episode 4 director, meaning he basically is the coordinator and has the last say if it comes down to it.

    Your talents are widely known and appreciated šŸ˜› maybe join our IRC channel #rmq on, or mail me anytime if you want access to the TRAC.

  • negke

    Oh nice, that’s more progress than expected. I might pay you visit on your channel some time.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: