Announcement

Collapse
No announcement yet.

Why All Servers Run ProQuake (Now)

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Why All Servers Run ProQuake (Now)

    Why (Almost) All Servers Run ProQuake

    This is a quick look at why (almost) all servers run ProQuake right now -- and, in comparison, why it would be relatively difficult for most of them to switch to DarkPlaces as the server.

    Brief History

    The original Quake server (winquake) had a ton of exploits. A lot! I can't remember them all but all kinds of attacks were possible.

    Although there are many new NQ clients -- JoeQuake, Telejano, Vengeance R2, and on and on -- only 2 improved servers with full standard NetQuake server capability exist today: ProQuake and DarkPlaces.

    ProQuake server solved almost all of the problems (didn't solve IP masking though). DarkPlaces server, while road tested in other scenes, never has really been tried in the NetQuake community.

    QCCX Barrier

    DarkPlaces does not support "QCCX'd QuakeC", special code supported by ProQuake that really isn't QuakeC but gives ProQuake server certain extra capabilities otherwise not possible with standard ID software QuakeC.

    This non-standard code is virtually unintelligible, barely documented but served a purpose in it's time by permitting special capabilities that were compatible with ID Software's Quake before Quake became open source.

    A Look At What Is "Served"

    There are only a few mods out there that get a lot of play:

    1. RuneQuake. Moderately QCCX'ed. Open source.
    2. CRMOD. Heavily QCCX'd and closed source and non-developed.
    3. CRCTF 2.0. Heavily QCCX'd and closed source and non-developed.
    4. Rook's CRCTF 3.2. Probably QCCX'd to some degree, only he knows.
    5. CA+. Probably QCCX'd to some degree, closed source and non-developed.
    6. RQuake. Moderately QCCX'ed. Open Source.
    7. CAx. Probably QCCX'd to some degree, only Rook and Bam would know.
    8. Rocket Arena, RuneQuake version. Moderately QCCX'ed. Open source.

    There is close to 100% of the mods that get played a lot. None of these mods could be run on DarkPlaces server without modification.

    This doesn't mean it is impossible. It may be possible to run CAx and Rook's CRCTF under DarkPlaces with mild modifications.

    RuneQuake, RQuake and Rocket Arena (which is the exact same thing as RuneQuake, with a different server.cfg) are open source but it appears that the code utilizes a good deal of QCCX compiler specific code (Slot Zero and Lardarse's thread discussing this).

    That doesn't leave many remaining mods. Slide. AirQuake. Maybe DM+. IHOC possibly. Vanilla DM or vanilla RA in some form.

    Although I am sure that DarkPlaces can run code compiled with FrikQCC, Lardarse attempted to compile a very early version of RuneQuake (0.1) with FTEQCC -- probably the best compiler -- and encountered tons of warnings so it is likely to assume even Artifact RJS (RuneQuake's precursor) would be difficult to make it compile with FTEQCC.

    The Signficance of RuneQuake

    RuneQuake has been a very important mod for the NetQuake community in ways even players that don't like RuneQuake aren't aware of.

    The Rocket Arena mode in RuneQuake (which does not have Runes) is greatly preferred to all other forms of Rocket Arena by most players.

    RuneQuake has 3 things built into it that have nothing to do with Runes:

    1. Vote-options. Long ago Quake moved from a "admin-controlled" game to a player controlled game. This means players want the ability to change the map, vote rules and basically run the server without an admin.

    Servers that do not have this flexibility (Fear, Beatdown Alley) are generally less popular because players are stuck on some map that happens to be running or maybe with a setup they don't like (on Shmack:26002 you can vote almost anything and the same with CAx, CRMOD and CRCTF).

    2. Observer system. A convenience to those that want to watch instead of play. You can press 4 when connected to a RuneQuake server to watch or when dead.

    3. Online battle-tested. RuneQuake has been heavily debugged and proofed against numerous different situations plus it is open source. Progs 1.06 is very flawed by itself and allows for all sorts of bad things (infinite typing "kill in console", infinite changing colors, etc.)

    Hence, RuneQuake is one of the few codebases that a new mod can be built on, which is why there have been a ton of derivatives.

    xCTF (link) is another example of an online played tested open source code base.

    The Future

    None of this means that no server can be setup using DarkPlaces. There are other mods with some of this functionality. Assuming that Lardarse, for example, can successfully get RuneQuake 0.1 to compile with FTEQCC, the following would be the remaining obstacles:

    1. IP Masking, engine side. This is probably easy to do. Most mods including CAx do this mod-side with QCCX code. Some servers like Shmack and IHOC use engine-side IP masking

    2. Vote capability. As far as I know, most of the capabilities of RuneQuake to support, for example, 200+ custom maps and countless different vote options somehow seems to depend on QCCX code (I could be wrong!).

    I mention RuneQuake 0.1 as signficant because it is open source and has an observer system and has been battle tested and really only varies from the later versions of RQ in the sense that it has very few voting options.

    Basically, in summary the main problem of using DarkPlaces as a server is that a mod would have to pioneer these areas using QC extensions and such that as far as I know, no one in NQ is familiar with. So someone would have to be the one to write the first open source mod with these kinds of capabilities (particular the vote capabilities).

    Maybe these already exists in a Nexuiz mod or somewhere else in the DarkPlaces universe.
    Quakeone.com - Being exactly one-half good and one-half evil has advantages. When a portal opens to the antimatter universe, my opposite is just me with a goatee.

    So while you guys all have to fight your anti-matter counterparts, me and my evil twin will be drinking a beer laughing at you guys ...

  • #2
    What does vote capability have to do with darkplaces? That's more of a mod functionality which most engines should support. Am I wrong?

    Comment


    • #3
      I'm not into QuakeC enough to understand why RuneQuake's advanced vote-map capability is not compatible with standard Quake. For instance, RuneQuake 0.7 and above cannot run with JoeQuake in -listen server mode, therefore some sort of non-standard functionality is going on.

      I know that RuneQuake somehow cheats limits to allow support for so many maps and vote-options. I don't know how it is done or understand it.

      DarkPlaces has "legitimate" methods to do these kind of things.

      My lack of understanding what is going on is somewhat illustrative of the greater problem being that there would need to be a "pioneer mod" that had some of this stuff in a DarkPlaces compatible method.

      I am not aware of anyone with both a thorough understanding of existing and modern NetQuake mods (Bam, Rook, RocketGuy, ..) and DarkPlaces extensions, which compounds the problem.
      Quakeone.com - Being exactly one-half good and one-half evil has advantages. When a portal opens to the antimatter universe, my opposite is just me with a goatee.

      So while you guys all have to fight your anti-matter counterparts, me and my evil twin will be drinking a beer laughing at you guys ...

      Comment


      • #4
        Add: there are probably simple workarounds for simple mods. I'm thinking about the more sophisticated mods like RQ, CRCTF and CRMOD.

        I'm pretty sure that mods like these could be made or cloned to be DarkPlaces compatible.

        For example, Rune Quake has almost all the functionality of CRMOD in it now to run vanilla DM with almost all the capabilities of CRMOD and therefore CRCTF 2.0 (which was based on CRMOD).

        But I think Rune Quake is heavily QCCX'd by necessity to support this. With DarkPlaces and the myriad of extensions it supports I bet this could be done with a non-QCCX'd method, but an existing example of this type of code from another DarkPlaces mod would probably be required to know how to implement it.
        Quakeone.com - Being exactly one-half good and one-half evil has advantages. When a portal opens to the antimatter universe, my opposite is just me with a goatee.

        So while you guys all have to fight your anti-matter counterparts, me and my evil twin will be drinking a beer laughing at you guys ...

        Comment


        • #5
          Briefly, put, I use frikqcc 2.5 as my compile of choice. FrikQcc was built on qccx, adding more features. I mainly use it for arrays and pointers, for ip masking and the ban routine. My warp (map voting) scheme doesnt use any specific qccx code. Nor does the vote. If DarkPlaces can ip mask server side (im sure its easy enough to do) while preserving the original address for banned arrays then making a CAx version for darkplaces would be easy. And another thing that DarkPlaces can do, write data files out to the HD. Meaning playerstats that are saved to a formated textfile. DP has hundreds more qc extensions than ProQuake will ever have, which gives the modder more flexibility, and in return the mod more powerful...:d
          www.quakeone.com/qrack | www.quakeone.com/cax| http://en.twitch.tv/sputnikutah

          Comment


          • #6
            We're using FrikQCC 2.5 for RQuake a well. FTEQCC is derived from FrikQCC, except that Spike decided to remove some of the more evileness from it.

            I know that 0.1 and 0.2.8 of RuneQuake will compile, once you replace all occurances of "switch" with "sw" in runes30.qc - make sure that you do the search case-sensitive.

            Looking back at that discussion brought back memories. Here I am, over 6 months on, and I'm still no closer to being able to see through the evil hacks. And that worries me...

            It's a shame really. These problems have been haunting us for a long time now. And I don't see any end in sight...
            16:03:04 <gb> when I put in a sng, I think I might need nails
            16:03:30 <gb> the fact that only playtesting tells me that probably means that my mind is a sieve

            Comment


            • #7
              frikqcc 2.5 uses qccx arrays, 2.7 generates QC functions during compile to access the array without using qccx hacks.

              fteqcc generates QC functions also, but it has a bug with multiple function calls in one equation (just like qcc did), which causes even more problems for arrays.

              IP masking could be done entirely from QC if I exposed the network address as an entity field like .netname and .clientcolors are, using FRIK_FILE (substring function), or DP_QC_STRINGBUFFERS (lets you expand a string into several using a separator character, as well as put it back together) or KRIMZON_SV_PARSECLIENTCOMMAND extensions (which has the tokenize builtin, which unfortunately does not take a separator character and instead uses a C/QuakeC-language style parser).

              Speaking of KRIMZON_SV_PARSECLIENTCOMMAND I just now added a DP_QC_TOKENIZEBYSEPARATOR extension which lets you supply a separator string to split a string by, so now I just need to add the ability for the qc to see the IP address.

              But I'd rather put real ban lists in the engine

              Originally posted by R00k View Post
              If DarkPlaces can ip mask server side (im sure its easy enough to do) while preserving the original address for banned arrays then making a CAx version for darkplaces would be easy.
              It even has sv_cullentities_trace 1 which means no more wallhackers, that's worth something all by itself

              Comment


              • #8
                It even has sv_cullentities_trace 1 which means no more wallhackers, that's worth something all by itself
                Truely I saw that extension the other day and was thinking "Ah so the server culls the view of entities to EACH client based on THEIR pov"? That's really a nifty idea. Yes, a ban engine side would be the best way. As long as the mod can interface with it.
                www.quakeone.com/qrack | www.quakeone.com/cax| http://en.twitch.tv/sputnikutah

                Comment


                • #9
                  wow,you have no idea how big my headache is from reading all this. It was minor when I finished reading Baker's post,but after reading Lardarse,LordHavoc,and Rook completely baffle me with this coding jargon, its a full fledged migraine!

                  kudo's to everyone who helps makes Quake1 (NetQuake!) better in every shape and form.

                  *cough 32 player CAx*
                  Want to get into playing Quake again? Click here for the Multiplayer-Startup kit! laissez bon temps rouler!

                  Comment


                  • #10
                    Mindz - This is nothing, come on irc sometime during an engine discussion... ....ow. LordHavoc and Sajt got into a discussion regarding... I cant even summarize what it was basically, beyond organizing basic world data in a form other than BSP for portals and such. I couldnt read it. It was like looking at a dll in notepad and assuming it meant something.
                    Inside3d - Because you can't be Outside 3D!

                    Comment


                    • #11
                      Originally posted by R00k View Post
                      Truely I saw that extension the other day and was thinking "Ah so the server culls the view of entities to EACH client based on THEIR pov"? That's really a nifty idea. Yes, a ban engine side would be the best way. As long as the mod can interface with it.
                      Yes basically from their pov, but not taking into account their field of vision as they can turn rapidly clientside, all it does is more tightly cull the entities (the pvs is a bit loose), so wallhacks become not only harmless but actually harmful to the players who use them - after all, all that transparency is a bit distracting to begin with, if it doesn't reveal players anymore it's actually a complete waste

                      Yes some manner of interfacing with the ban system is needed, I'm not sure how that would occur off hand though, suggestions?

                      Comment


                      • #12
                        Thanks Mindf!3ldzX!

                        Comment

                        Working...
                        X