Inside3D!
     

Pet peeves about NQ engines

 
Post new topic   Reply to topic    Inside3d Forums Forum Index -> Engine Programming
View previous topic :: View next topic  
Author Message
Spike



Joined: 05 Nov 2004
Posts: 944
Location: UK

PostPosted: Tue Jun 08, 2010 4:34 pm    Post subject: Pet peeves about NQ engines Reply with quote

Baker wrote:
Spike wrote:
@Baker: I'd probably get less annoyed at NQ servers if they didn't have a limit of something like 30 chars on any say messages. :P


The protocol actually supports 44, which is what ProQuake/Qrack/JoeQuake and co. use. Probably DarkPlaces too when connected to an NQ server.

I agree that 30 is quite short. 44 isn't too bad.


The protocol has no limt. It is sent to the server as a clc_clientcommand. The server broadcasts it back as a svc_print command.
Its not a protocol limit, its a server limit.
The client can generate longer messages via the say command, even if the messagemode stuff on your client imposes a shorter limit.

44 is fine if all you want to say is 'hi', 'lol', 'you suck', 'nice frag', ':)' or 'join xx.xx.xx.xx:xxxxx instead'.
But its insufficient if you wish to be verbose. For example, my last sentance was longer than 44 chars, by 4, and I do not want to be 'ver' thank you very much.

So, urm, can servers be modded to not have such a low limit please?

Seriously though, 44?
(320/8) - 2 = 38
38 I could understand, except that it still makes no sense.
38-1-strlen(self.netname)
that would make some sense as a limit, but is far too short.
44? no sense at all.
Having said that, maybe the reason I don't understand the limit is because I'm not subtracting 2 due to it being coded in binary perhaps? Sadly base13 makes for bad jokes. :/
Why 44? :s
Seriously, why?

</rant>
_________________
What's a signature?
Back to top
View user's profile Send private message Visit poster's website
Baker



Joined: 14 Mar 2006
Posts: 1538

PostPosted: Tue Jun 08, 2010 4:51 pm    Post subject: Reply with quote

Ok but that's only one ... more please Very Happy Seriously.

(Personally I prefer it when players don't talk and just play. I would go for the 0 length maximum.)
_________________
Tomorrow Never Dies. I feel this Tomorrow knocking on the door ...
Back to top
View user's profile Send private message
frag.machine



Joined: 25 Nov 2006
Posts: 728

PostPosted: Tue Jun 08, 2010 5:01 pm    Post subject: Reply with quote

Personally, I think if you want to be verbose you should use IRC instead Quake Very Happy

But I must agree that 44 chars limit is just silly.
_________________
frag.machine - Q2K4 Project
http://fragmachine.quakedev.com/
Back to top
View user's profile Send private message Visit poster's website
r00k



Joined: 13 Nov 2004
Posts: 483

PostPosted: Tue Jun 08, 2010 5:06 pm    Post subject: Reply with quote

who knows... maybe you were right and they only set the buffer size to fit on a 320px screen... hmm 15 chars for player name + 30 chars chatsize = 45 ??

Code:

#define   MAX_CHAT_SIZE   45
char      chat_buffer[MAX_CHAT_SIZE];


Hmm ezquake uses chat_buffer[MAXCMDLINE]; which is 256!


Last edited by r00k on Tue Jun 08, 2010 5:34 pm; edited 1 time in total
Back to top
View user's profile Send private message
mk



Joined: 04 Jul 2008
Posts: 94

PostPosted: Tue Jun 08, 2010 5:11 pm    Post subject: Re: Pet peeves about NQ engines Reply with quote

Spike wrote:
Why 44? :s
Seriously, why?

Because it's the number of a Magnum.

http://24.media.tumblr.com/tumblr_l3pgwumWbp1qaw8kko1_500.jpg
_________________
Makaqu engine blog / website.

Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn.


Last edited by mk on Wed Jun 09, 2010 11:43 am; edited 1 time in total
Back to top
View user's profile Send private message
Spike



Joined: 05 Nov 2004
Posts: 944
Location: UK

PostPosted: Tue Jun 08, 2010 7:02 pm    Post subject: Reply with quote

And without using annoying retarded images, here's annother annoyance, but one with quake in general.
Set your name to be the character with value 0xff, via config file or whatever.
Join a server.
You do not appear on the scoreboard.
This worked with quakeworld. I assume it works with a few nq engines too, still.

A networking absurdity that can't really be fixed...
Each reliable packet received requires annother packet in reply containing nothing but an ack response. This is true even with DP7. sound builtin? hello tiny packets!
Also, what's up with the network packets using bigendian for the 'netchan' and littleendian for the contents?

port numbers need an extra cvar before connecting. thankfully most engines support specifying by ip:port now.

Can't allow more than 4 players on a simple server without commandline arguments, and you *still* need to stop the server before changing the actual number allowed (so long as its not more than 4). Still gotta boot everyone.

centerprint more than 1024 chars to a client and kiss their process goodbye.

Servers use different ports for every client, and a different port for the main listener. Hello NAT!

Need to start a new game in order to record a demo, can't just record one map of an episode, have to record the entire thing, or cheat to give you the weapons/ammo that you would have had.

reconnect command. my god!
It does exactly what it says on the tin. Or would if it was not sold in old newspaper (mmm, chips).

Starting up the exact same demos in the exact same order every single friggin time you start the engine. Doesn't pick a random one, oh no. THE SAME ONE! Thank you id, I really like that extra load time before I can get to the console to connect to server xyz!

tab completion on the console always completes to the exact same word, no matter how many matches there were.

Uses a US keymap. just press tilde to get to the console.... hah, yeah, right. shift+# gets nowhere. its backtic to get to the console.
Thankfully I don't have an azerty (french) keymap.

console doesn't let me just type what I want!

start a game, press t. type ;) (yeah, type the winking smilie)
whee

mods that stuffcmd without the '\n'. gah! I'm looking at you, malice! DAMN YOU AND YOUR v_cshiftS!!!

+mlook. yeah. I even bothered to say it.

autoaim. handy for breaking rocket shots. Hmm, does it also mess up grenades too?

connectionless status requests don't list player names, so you have no idea which server the troll is currently on when you join one. mod+map name would be nice, too.

strafe speed doesn't scale with the always-run option.

you need to know what mod a server is running before you try to connect to it.

zombies can be created with spoofed network packets, clogging a server, or triggering a denial of service attack on some victim by hooking up 20 nq servers to spam them with 16 players each.

the console keeps on appearing. :)

alias quit "say goo goo ga ga"
alias alias "say halp"
nuff said

and that's ignoring no prediction, the extra 50ms latency, the lack of deltaing, the hud obscuring the bottom 6th of the screen, the lack of a server browser, and the lack of a master server protocol.
_________________
What's a signature?
Back to top
View user's profile Send private message Visit poster's website
Baker



Joined: 14 Mar 2006
Posts: 1538

PostPosted: Tue Jun 08, 2010 8:16 pm    Post subject: Reply with quote

Spike wrote:
Need to start a new game in order to record a demo, can't just record one map of an episode, have to record the entire thing, or cheat to give you the weapons/ammo that you would have had.


Actually ancient original DOSQuake could record demos at any time. I refused to switch to even DOSQuake 1.09 as a result. I am not sure why or how that feature was removed in WinQuake and GLQuake.

Of course virtually every non-ProQuake NQ engine neglected to have that as a feature.

Quote:
Starting up the exact same demos in the exact same order every single friggin time you start the engine. Doesn't pick a random one, oh no. THE SAME ONE! Thank you id, I really like that extra load time before I can get to the console to connect to server xyz!


Add +startdemos to the command line. Wink

Quote:
tab completion on the console always completes to the exact same word, no matter how many matches there were.


Yeah, but that is more a id Software Quake flaw than a modified engines flaw.

Quote:
Uses a US keymap. just press tilde to get to the console.... hah, yeah, right. shift+# gets nowhere. its backtic to get to the console.
Thankfully I don't have an azerty (french) keymap.


I borrowed international keyboard support from DarkPlaces Wink Not 100% debugged, since I don't have a non-US keyboard so testing is a bit limited since I had to emulate other keyboards and then look at their pictures in a web browser to see what key does what.

Quote:
+mlook. yeah. I even bothered to say it.


Again, maybe a id Quake issue. But except the really conservative engines, not a modern problem.

Quote:
connectionless status requests don't list player names, so you have no idea which server the troll is currently on when you join one.


Not sure what this is. You can use the test2 command to see who is on a server using an NQ client that didn't strip out the command (DarkPlaces and also for some unknown reason: FitzQuake).

Yeah most of what you say is quite true. And probably more a result of NetQuake engine fragmentation than anything else. DarkPlaces was always geared toward modding features, FitzQuake towards current single player map making practices, ProQuake towards the oldskool NetQuake players, Qrack towards those that wanted more effects.

But never quite a single client emerged.

Ironically, maybe it is better that one never did. ezQuake has a lot of great features, but in Quakeworld the culture changed and adapted to the clients and is rather homogenized. (Plus I think it suffers from feature sprawl and the menu system is technically nice but the equivalent of a 1000 button remote).

If NQ had a single dominant engine, who would have an interest in engine modding?
_________________
Tomorrow Never Dies. I feel this Tomorrow knocking on the door ...
Back to top
View user's profile Send private message
mh



Joined: 12 Jan 2008
Posts: 909

PostPosted: Tue Jun 08, 2010 9:11 pm    Post subject: Reply with quote

Most of those are fixed by modern clients, just scanning through the list I can check off 50% to 75% myself. An awful lot of them are hangovers from the old DOSQuake heritage, where Quake was originally designed to run on a P60 with 8MB of RAM over a 14k modem. The netcode unfortunately is a thundering disgrace, and here it's a crying shame that ID never did get round to creating that unified Quake 1 executable that Carmack wrote about in his .plan on the road to Q2. To think that we could have had a single standardised protocol for both NQ and QW by now - sigh.

No excuse for limiting players on a server to 4 these days, although in fairness anyone using NQ seriously for MP is using a dedicated server anyway so it probably doesn't apply to clients.

Some good catches though that hadn't occurred to me. The stuffcmd without '\n' one should be easily fixable, and alias should be modded to not allow overwriting of registered commands (and cvars) (in fact, looking at my code I've already done that one).

A lot of this touches on the different requirements of QW and NQ players, and the different requirement of SP and MP players. Baker's point about a single NQ client never emerging is a good one, but I think it's a result of different requirements and tastes among NQ users. It's great that you can choose between options like raw speed, faithful looks, eye candy, modding features, MP features, high limits and so on, and basically tune your playing experience to suit yourself.

The price of that is lack of a single baseline to target, and incompatibilities between engines, that's kinda worth paying, it's something we're working on, and is a hangover from the early QuakeSrc.org days when people just did what they wanted without caring about stuff like that.

Two of my own pet peeves:

The command line. This should be completely optional; use it if you want but everything you can do from the command line should also be accessible while the engine is running.

The Cult of the Great God GLQuake. Followers of this bizarre religion believe that the way GLQuake screwed a lot of things up is a good and natural thing, and Thou Shalt Not Deviate From It.
_________________
DirectQ Engine - New release 1.8.666a, 9th August 2010
MHQuake Blog (General)
Direct3D 8 Quake Engines
Back to top
View user's profile Send private message Visit poster's website
Spike



Joined: 05 Nov 2004
Posts: 944
Location: UK

PostPosted: Tue Jun 08, 2010 9:55 pm    Post subject: Reply with quote

Quote:
A lot of this touches on the different requirements of QW and NQ players, and the different requirement of SP and MP players. Baker's point about a single NQ client never emerging is a good one, but I think it's a result of different requirements and tastes among NQ users. It's great that you can choose between options like raw speed, faithful looks, eye candy, modding features, MP features, high limits and so on, and basically tune your playing experience to suit yourself.


There's a saying.
You can have it cheap.
You can have it reliable.
You can have it soon.
Pick two, you cannot have all three.

Some fragmentation is good, but there comes a point where the fragmentation actually fragments, if you get what I mean. :s

Yes, many of those things are things which cannot be changed, like the network protocol, at least not by default. But that's not to say that you can't fix things without changing the protocol. There are a lot of places where limits simply are not checked (in quakeworld too) that can permit remote exploits. This is particuarly bad when you consider that quakeworld/enhanced engines permit poluting your quakedir with downloaded models/maps and stuff...

Stuffcmd without a \n is an awkward one to fix. Many mods send partial stuffcmds. A little here, a little there, eventually you get a full command. I suppose NQ not having backbuffers is a godsend in this regard, as any packet that left a stuffcmd unterminated should have been terminated, but if you're using a protocol translator from qw, which does have backbuffers, then it can get split and you end up terminating alias commands... Fun all round (my qtv proxy can do this, so don't say it'll never happen!).

mh, My point about 4 players on a server is that you cannot increase it to 16 while the engine is running, but you can change it to 2, say, by stopping the server first. But to get it past 16 requires quitting. Its weird. Just that.

Baker, The problem with recording demos at any time gives rise to the issue that you have entities being sent with models that match no precache. And true to quake, that'll probably crash the client with a null pointer. :)

Baker, Adding *more* stuff to the commandline is not an option!

A command named 'test2' is hardly a command that I want to use!
That's like saying 'please press the mightexplode button' (no, I don't refer to windows, although that's another annoyance for the clumsy).

Yeah, most of my annoyances are based upon vanilla quake, and involve quakeworld too, a fair amount.

Baker, its all well and good adding support for UK keymaps, for instance, that's a nice gesture to the brits with their weird keymaps (actually, its not that different, but its *really* annoying when it comes to programming), but Quake will likely never truely support accents or whatever that you might find on any kind of european keyboard. Even UK keyboards have pound signs and euro signs :) and funny es if you press alt-gr first. :s
café is the only word that has an accent in english, but its far far far more common to type it without. :)

But yeah... 44? pleeeeeease fix? :/
_________________
What's a signature?
Back to top
View user's profile Send private message Visit poster's website
Baker



Joined: 14 Mar 2006
Posts: 1538

PostPosted: Tue Jun 08, 2010 10:17 pm    Post subject: Reply with quote

Spike wrote:
mh, My point about 4 players on a server is that you cannot increase it to 16 while the engine is running, but you can change it to 2, say, by stopping the server first. But to get it past 16 requires quitting. Its weird. Just that.


That isn't hard to change. I've done it before in a private engine where adding bots is important and the 4 limit is annoying.

Quote:
A command named 'test2' is hardly a command that I want to use!


It's a standard Quake command. Like "test" and "test2" and "status" and "ping". Nothing strange about it.

One time Monster was at a RocketArena server using DarkPlaces and wanted to see who was playing at a CAx server ...

Monster: Someone do a test2 for me.
Baker: No! Hahaha

Quote:
Baker, its all well and good adding support for UK keymaps, for instance, that's a nice gesture to the brits with their weird keymaps (actually, its not that different, but its *really* annoying when it comes to programming), but Quake will likely never truely support accents or whatever that you might find on any kind of european keyboard.


Eh, well Quake will never support the Chinese or Japanese or Arabic keyboard either. Heheheh.

Any language that has 5 different squigglies on top of an "e" needs to consolidate, hahahaha.

If those accented letters are so useful, why don't they invent a CAPTCHA system that uses them and people have to stare at the screen trying to figure out which type of "hat" the letter is wearing.

Any continent where driving 10 miles in any direction causes people to no longer be able to communicate verbally needs to make some decisions. Very Happy How are you going to explain that situation to the aliens when they are trying to figure out how to communicate with us?

Quote:
But yeah... 44? pleeeeeease fix? :/


No way! Very Happy Players that want to yack on a server need a nice warm cup of STFU. NetQuake has a problem with players that talk WAY too much already. Very Happy
_________________
Tomorrow Never Dies. I feel this Tomorrow knocking on the door ...
Back to top
View user's profile Send private message
mh



Joined: 12 Jan 2008
Posts: 909

PostPosted: Tue Jun 08, 2010 10:36 pm    Post subject: Reply with quote

I can see one reason why the 4 client limit was done, and that's because each potential client needs a qsocket_t and a client_t struct allocated (+ 1 extra qsocket_t for the server). Within the original DOSQuake constraints that's a lot of extra memory that could have been used for BSPs, MDLs, etc. Requiring a command-line option serves as a "just what do you think you're doing, Dave?" warning.

Of course on a modern port there's no reason why the qsocket_t and client_t structs can't be dynamically (re)allocated if maxclients changes (which it can only do without an active server so it's safe to do so).

@Baker: I've been in continents where driving 1000 km (getting all Metric on your ass here) causes people to not be able to communicate. It's great and I recommend it! Very Happy
_________________
DirectQ Engine - New release 1.8.666a, 9th August 2010
MHQuake Blog (General)
Direct3D 8 Quake Engines
Back to top
View user's profile Send private message Visit poster's website
Baker



Joined: 14 Mar 2006
Posts: 1538

PostPosted: Tue Jun 08, 2010 10:41 pm    Post subject: Reply with quote

mh wrote:
@Baker: I've been in continents where driving 1000 km (getting all Metric on your ass here) causes people to not be able to communicate. It's great and I recommend it! Very Happy


Heheeh, I was just kidding around. That being said, the Quakeworld.nu forum requires all posts be in English.

Putting that tangent stuff aside, even supporting multiple languages isn't going to get game content to be language specific. It would require a great deal of menu translation and such. What would you do with cvar and command names or command line parameters?

It might make it so players can inter-communicate in their native language, which would be a plus, but beyond that it would still require a ton of folders for language versions and all the effort to get someone competent to translate it.
_________________
Tomorrow Never Dies. I feel this Tomorrow knocking on the door ...
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Inside3d Forums Forum Index -> Engine Programming All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2004 phpBB Group