Announcement

Collapse
No announcement yet.

Quake1 Network Protocol

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

  • Quake1 Network Protocol

    I am exploring coding a little Quake server notification application. And although I've been able to find some resources regarding the Quake network protocol (Unofficial Quake Network Protocol Specs v1.01b & Quake Specs v3.4), the code I've written for Server Info Request so far hasn't been successful yet. When testing, I can confirm that the server gets my request. Yet I get no response from the server. I suspect the problem might be that as I'm sending the request to the server that my use of the code 03h for the quake version field is wrong.

    What is the currently recommended reference document about the Quake network protocol, and more specifically ProQuake?

    Thank you in advance.

  • #2
    Originally posted by Demiurge View Post
    I am exploring coding a little Quake server notification application. And although I've been able to find some resources regarding the Quake network protocol (Unofficial Quake Network Protocol Specs v1.01b & Quake Specs v3.4), the code I've written for Server Info Request so far hasn't been successful yet. When testing, I can confirm that the server gets my request. Yet I get no response from the server. I suspect the problem might be that as I'm sending the request to the server that my use of the code 03h for the quake version field is wrong.

    What is the currently recommended reference document about the Quake network protocol, and more specifically ProQuake?

    Thank you in advance.
    This question should be asked at Inside3d.com where developers hang out. This is more of a player's forum where the most advanced topics that are really suitable are Linux compiling, server settings and using mods and skins.

    Way too advanced topic for this forum.
    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


    • #3
      Are you using wireshark to monitor the packets sent to and from the Quake server? I would start by running wireshark and using a commonly used Quake client (proquake, standard winquake, etc) to connect/query a server. I think "test <ip>" is the Server Info Request. Now you can compare your packets with a working packet. When I was looking at the Quake network spec a few years ago, I remember also having to be careful with the endianess of certain fields.

      Comment


      • #4
        Yea use wireshark, it even has a Netquake protocol analyzer which breaks the packet down for you making it simple.

        Comment


        • #5
          Ya know, Kimp was asking me about "quake protocol" on that dm server the other night, and this guy has less than 12 posts... run!
          www.quakeone.com/qrack | www.quakeone.com/cax| http://en.twitch.tv/sputnikutah

          Comment


          • #6
            Originally posted by Demiurge View Post
            What is the currently recommended reference document about the Quake network protocol, and more specifically ProQuake?
            The source code.
            Gentoo Linux

            Comment


            • #7
              Originally posted by Dreadlorde View Post
              The source code.
              Precisely. There is no reference document as such, but the source code is quite explicit on what each message means and what data it contains. Avoid the net_*.c files, they're just the underlying transport. Look instead at cl_parse.c and other cl_*.c files for a good starting point, and the corresponding sv_*.c files (especially sv_main.c) for the view from the other side.
              IT LIVES! http://directq.blogspot.com/

              Comment


              • #8
                Originally posted by R00k View Post
                Ya know, Kimp was asking me about "quake protocol" on that dm server the other night, and this guy has less than 12 posts... run!
                My question to you was genuine, and this is why I also posted it here. It isn't Kimp that asked you that question, it was me. I've only been around QuakeOne.com of late, and I was around the team DM scene during the early years, as many can attest.

                Comment


                • #9
                  Originally posted by Baker View Post
                  This question should be asked at Inside3d.com where developers hang out. This is more of a player's forum where the most advanced topics that are really suitable are Linux compiling, server settings and using mods and skins.

                  Way too advanced topic for this forum.
                  Thank you for the recommendation. I'll check it out.

                  Comment


                  • #10
                    BizarroEvade & EFESS

                    I haven't used Wireshark yet. I just downloaded it and will what I can glean. It's great to have resources like that. As I mentioned to you, EFESS, on the server, I suspect that I just need the right value for the quake version field, or something along those lines.

                    Thank you both!

                    Comment


                    • #11
                      Originally posted by mhquake View Post
                      Precisely. There is no reference document as such, but the source code is quite explicit on what each message means and what data it contains. Avoid the net_*.c files, they're just the underlying transport. Look instead at cl_parse.c and other cl_*.c files for a good starting point, and the corresponding sv_*.c files (especially sv_main.c) for the view from the other side.
                      Yes, it would appear there are no reference documents for the Quake network protocol, except the older documents that I hyper-linked in my initial post. I appreciate your pointing me in the right direction for the client-side and server-side networking code.

                      Comment


                      • #12
                        Triple post! +++
                        Gentoo Linux

                        Comment


                        • #13
                          No your server version is right

                          Code:
                          private const string SERVER_GAME = "QUAKE";
                                  private const byte SERVER_GAME_VERSION = 0x03;
                          Make sure your lengths are correct and you're terminating the strings in your byte array with a null (0x00h)

                          Comment


                          • #14
                            Originally posted by EFESS View Post
                            No your server version is right

                            Code:
                            private const string SERVER_GAME = "QUAKE";
                                    private const byte SERVER_GAME_VERSION = 0x03;
                            Make sure your lengths are correct and you're terminating the strings in your byte array with a null (0x00h)
                            Thank you! You hit the nail on the head. My server game field needed null termination. It worked like a charm after I added it.

                            Thanks again.

                            Comment

                            Working...
                            X