It took a while to track down the code that was blocking this, but I've finally found it. There were actually two places that needed to be addressed; the first was the code that handled the mouse state in windowed modes when the menu or console are up (going into keybinding mode needed to regrab the mouse), the second was in the main mouse input loop for DirectInput where I have a check that just flushed the buffers and got out if the mouse shouldn't be active (this helps to prevent buffered up commands from unwinding when you go back into the game).
It's looking like scoreboard ping is just not going to happen at all. I was hoping to be able to at least give you your own ping time back to the server, but on further investigation of the code it seems as though not even that is available to the client. The alternatives are either breaking the protocol or implementing the kludgy hack that is the ProQuake messaging system. I'm not going to break the protocol, and the ProQuake messaging system is a kludgy hack. Basically what it does is write ping times into a string, something like "Client ping times:100 200 127 212" etc, which must then be parsed out. Why it couldn't have treated the string as a byte array and used the standard Msg_Read and Msg_Write functions I'll never know, but it's too late to go back now.
Anyway, I have huge reluctance to do this as string parsing in C can be evil. Plus DirectQ is not a dedicated multiplayer client - it's a general-purpose client that can be used for multiplayer. Implementing dedicated multiplayer features will steal time from elsewhere, with the end result that something more generally useful might end up not being done.
Somebody asked for "common DarkPlaces extensions" but nobody rose to the bait when I asked "define which extensions are 'common'". This is a shame as I'd like to start implementing some of these, DirectQ already supports the necessary checkextension framework, and I've even done some of the required code for some. But I need to be told which extensions are "common", because otherwise I'll just do code that never gets tested and may not be even useful. At least I need to be pointed at a mod (and make it an SP one please so that I can test more easily, and crash without breaking someone else's game) that uses some of these mythical lesser-spotted "common" extensions.
Otherwise it won't be done.
The same goes for Frik File, and any other extension of the default Q1 behaviour, by the way. Give me the name of a mod that can be tested in an offline and safe manner and I'll do it, otherwise I won't.
Tuesday, March 9, 2010
Menu Keybinding for Mouse Buttons is Fixed - And More
Posted by
mhquake
at
11:51 AM
Subscribe to:
Post Comments (Atom)
3 comments:
I was only looking at version 1.05 last week and even 9 years ago it was almost unrecognisable compared to ID's code. Still some little gems in there - they just take some moulding to use in any other port
Cheers, kempie
1.05 it was. :) I always liked DP before it went down the "heavyweight" route with RT lighting and bumpmapping.
Yep - one of the first to really dial in the image quality of Quake. Not eye candy just rendering the basics extremely well.
Post a Comment