#1367 posted by Gunter on 2017/02/08 18:13:48
The benefit of menus is that they provide the user with visible options that they otherwise won't know about (because they are hidden in obscure console variables).
Experienced users are mostly aware of these options, but Mark V has so many more options (with not-so-great documentation) that even I am uncertain I know all the options I may want to fiddle with. The "find" option in the console is certainly very helpful, but you have to know what you want to search for before you can search for it.... With a menu, it's like, "oh, that's an option? Neat, let's see what it looks like..."
I don't think being "automatically anti-menu" is really the best approach. The problem may be that you've encountered some BAD menus, but that doesn't mean all additional menus are bad.
It would be nice to have the Basic menus for the basic user, then perhaps some deeper level of Advanced menus for people who really want to tweak their settings (sounds like that secret menu FE just mentioned).
I'm against "bad menus" myself.... I don't want things to get too cluttered up when I am trying to change some basic options. But I am not against having advanced menus with tons of settings in them, as long as they are clean and easy to understand and navigate.
#1368 posted by mh on 2017/02/08 21:44:22
I think Quake is in a unique position because a lot of it's defaults are actually no longer sensible defaults.
That's at least partially on account of it's heritage - moving from a mostly-keyboard setup with no free looking, nobody actually had a clue how the game would have been played.
It's obvious that ID had expected joysticks to be the predominant control mechanism. Just look at all the joystick setup cvars, the existence of a dedicated readme for joysticks, sample .cfg files for different models, sponsorship deals, not to mention the ganky joystick code in the engine itself.
The existence of sensible defaults means that menu options are not really such a huge necessity. In Quake you need to either change the defaults or give the player an easily discoverable way of doing so themselves.
#1369 posted by R00k on 2017/02/09 00:02:50
"I do like the option to have +speed slow you to walking speed if "always run" is on -- it seems like I've encountered that behavior in one of the other engines, maybe Quakespasm or FTE. It's like, "why not?" because +speed effectively won't do anything if you are already running, so go ahead and have it toggle your speed."
I also have this behavior in Qrack, if your speed is > 300 then it will cut your speed in half, if its less then it will double it, both forward back, side as well. I'm used to pressing shift in modern games to "sprint" so it helps.
@r00k - Gunter Quote
#1370 posted by Baker on 2017/02/09 01:01:05
Your quote of gunter -- that's actually probably the strongest argument I've seen.
Not the "other games" part -- I'm indifferent about that -- but the +speed "doesn't do anything if you already running".
I somehow missed seeing that in the thread until now. Probably because where lots of comments in a short period of time.
Sidespeed
#1371 posted by mh on 2017/02/09 07:26:03
The core issue is that all of the cl_*speed cvars relating to movement have defaults of 200, with the exception of cl_sidespeed which is 350.
Most people are used to "always run" just doubling forward and back speed, so it becomes forward 400, back 400, side 350 and up 200 (up is rarely used).
Doubling the speed on all axes, either via +speed or a Quake II-ish method, will increase cl_sidespeed further and cause it to dominate.
Quake II changes cl_sidespeed to 200 and removes cl_backspeed. I'm not sure when cl_sidespeed was changed but I do know that cl_backspeed was removed in the last month before Quake II went gold, so that was a change made after Quake II was it's own engine rather than just an experimental branch of Quake.
Quake II also changes cl_forwardspeed to not be saved to your config. I believe saving it was just a hack in Quake 1 so that the always run setting would be saved, but have no evidence either way.
All of this is discussion points. I know which behaviour I personally prefer but I'm not trying to convince anyone else.
Capturevideo
#1372 posted by PRITCHARD on 2017/02/09 10:57:52
So, does capturevideo only work when watching a demo? Or can it record "live" gameplay? I set my codec and FPS but it complains about them not being set when i enter the command. If it only works on demos, adding that explanation to the error text would be useful.
#1373 posted by Baker on 2017/02/09 12:47:29
You can capture in real time, but capturevideo is intense and not necessarily a good fit for real-time capture --- it's going to be an fps/cpu hit and at higher resolutions the penalty gets stiff.
bind x "capturevideo toggle"
Make sure you have the other capturevideo settings the way you want:
capturevideo_codec xvid // I'd recommend this at least at first
capturevideo_fps 15 // You can always increase it.
Smaller resolutions like 640 x 480 are going to work better than larger ones because pixel count increases drastically.
You may also wish to consider something like Bandicam which works great with DirectX which Mark V DX9 obviously is. Someone earlier in the thread said how great Bandicam is.
#1374 posted by R00k on 2017/02/09 17:14:50
"Quake II changes cl_sidespeed to 200 and"
no wonder i always though sidespeed was weird in quake 1.
I played Quake1 freeware version all the way through, then later played Quake II extensively. Then came back to Quake 1.
//R00k: i didnt want +/-speed with 'always run on' to eventually STOP the player, but instead toggle the speed from walk to run, or run to walk.
if (cl_basespeedkey.value && cl_movespeedkey.value)
{
if ((cl_forwardspeed.value > 200) && (in_speed.state & 1))
{
if (!(in_klook.state & 1))
{
cmd->forwardmove += 200 * CL_KeyState (&in_forward);
cmd->forwardmove -= 200 * CL_KeyState (&in_back);
}
}
else
{
if (!(in_klook.state & 1))
{
cmd->forwardmove += cl_forwardspeed.value * CL_KeyState (&in_forward);
cmd->forwardmove -= cl_backspeed.value * CL_KeyState (&in_back);
}
if (in_speed.state & 1)
{
cmd->forwardmove *= cl_movespeedkey.value;
cmd->sidemove *= cl_movespeedkey.value;
cmd->upmove *= cl_movespeedkey.value;
}
}
}
else
{
if (!(in_klook.state & 1))
{
cmd->forwardmove += cl_forwardspeed.value * CL_KeyState (&in_forward);
cmd->forwardmove -= cl_backspeed.value * CL_KeyState (&in_back);
}
if (in_speed.state & 1)
{
cmd->forwardmove *= cl_movespeedkey.value;
cmd->sidemove *= cl_movespeedkey.value;
cmd->upmove *= cl_movespeedkey.value;
}
}//Phew!
only issue i have with above code is when you set your speed cvars to something like 180 then you will go in the opposite direction with +speed :P
#1375 posted by dwere on 2017/02/10 02:56:39
no wonder i always though sidespeed was weird in quake 1.
Probably to make dodging easier for keyboard-only players. Once again, only somewhat relevant in 1996.
Useless trivia: Chasm made itself look like even more of a Quake clone by copying this behavior.
only issue i have with above code is when you set your speed cvars to something like 180 then you will go in the opposite direction with +speed :P
Uhhhh, I have them at 160...
#1376 posted by PRITCHARD on 2017/02/10 13:30:49
So is that "reloading the level dead" bug specific to Mark V? I've been getting it a lot lately. Don't remember ever seeing it with QS.
Centerprint Positioning
#1377 posted by mh on 2017/02/14 23:37:03
<p>if (scr_center_lines <= 4)
y = vid.height*0.35;
else
y = 48;</p>
This code always puzzled me. At modes larger than 320x200 the result is that centerprints more than 4 lines (including the e2 entrance message in start.bsp) will be rammed up near the top of the screen, whereas centerprints of 4 lines or less will be more accurately centered. This looks awful.
There was some kerfuffle over the whole thing in the old thread.
I believe I know the reason why.
It's for the slow finale printing at the end of an episode.
The give away is the positioning of the gfx/finale.lmp banner in Sbar_FinaleOverlay - it's at a y of 16, and when we add the banner height of 24 we get 40; 8 more pixels for a blank line between the banner and the centerprint and there's the 48.
Why did Carmack do it this way rather than checking for cl.intermission == 2? Probably the same reason he did a lot of other crazy-seeming things in the Quake code - a rush to get things done and get the game shipped.
#1378 posted by mh on 2017/02/14 23:54:44
Some further evidence: Carmack's .plan for 17th June 1996 gives us the exact date that the centerprint change was made.
https://github.com/ESWAT/john-carmack-plan-archive/blob/master/by_year/johnc_plan_1996.txt#L3436
Interestingly he was also working on items relating to level transitions and boss/finale stuff on that day. "end of e4 text crash" was an item. So the evidence definitely correlates this change with work on finale messages.
#1379 posted by Gunter on 2017/02/16 18:26:28
Well, like you said, he could have easily made it only apply to the "Congratulations" messages and not other Centerprints if he wanted, but he just notes in the changelog:
"changed center print position for very long text messages"
And I'm sure he would have noticed the E2 entrance message being affected by this, since it's right on the Start map, so it's no accident.
It just makes sense to me that any "very long" message would be moved up, out of the direct center of your view.
I actually didn't know that the Congratulations messages were considered Centerprints -- they use different functions in QuakeC, but I guess the engine funnels them through the same printing method. I tested it and, indeed, an end level message of only 4 lines will be centered lower on the screen. Weird.
If he were just trying to position those end-level messages only, counting the number of lines would be a very hacky way to do it. that sounds like something *I* would do!
Mirrors
#1380 posted by Gunter on 2017/02/16 18:55:35
Picked up a couple of new Mark V users last night -- some old returning FvF players (I'm talking old players from the 90s).
They said Mark V works much better for them than GLquake (obv!), but they were still having some connection problems -- and I've seen another player who has this issue on the server too (I think it's Mr. Burns who has this issue, maybe):
When the level changes, they get stuck in the console and never reconnect to the server. We still see their names as connected players, but their frags are shown as "0." I believe we told Mr. Burns to try typing "ping" in the console when this happens, and that sometimes allows him to connect and get back in without having to totally reconnect and lose all his frags.
I don't have any control over the server (Polarite does that), but it appears to be running "Magic ProQuake Server Version 3.90" in linux.
I really can't provide much more information about this issue.... I assume it's one of those things where it gets stuck doing the "keepalive" messages in the console. I'll ask more specifically the next time someone encounters this -- it's only a few players, but it affects them consistently.
Also, one of the returning players asked about mirrors -- he wanted to be able to see his reflection (mentioning that it was a pretty big deal/cool feature back in the day), and I told him mirrors only worked when running plain ID1... but I realized that it really SHOULDN'T be this way, as it violates what I think should be a pretty important aspect of Quake engine design: you shouldn't take away user control and force your own preference on the end user (even with good intentions).
I mean, there are already various mirror variables that the user can set if he wants mirrors to be on or off (and actually, they should probably be off by default). If the user wants to turn them on, even in a mod or map where it might not work well, he should be able to do so.
Also, for those users that want to play with mirrors, how about an easy way to set a mirror texture. Specifically, something like (probably used in conjunction with tool_texturepointer, but not necessarily): if you input "set_mirror" in the console, it will assign the mirror effect to whatever texture you are pointing at (manually typing in those texture names for the mirror texture prefix is a chore and prone to typos, heh).
Of course, there's the issue of having to restart a map before it takes affect, but it would still be handy for people that want to play around with mirrors.
I suppose it would be handy to be able to feed the pointed-at texture into any of the tex prefix variables, actually.... Not sure how that could be implemented, other than copying the selected texture name into the console and allowing tab to autocomplete the various things you might want to apply it to.
Ah, yeah, it would work if you just had it stick "r_tex [copied texture name]" in the console and positioned the cursor right after r_tex, then tab will autocomplete all the various r_texprefix things with the selected texture already filled in.
Mirror ???
#1381 posted by JPL on 2017/02/16 21:24:08
I want to see a Quake ingame video of this effect
#1382 posted by mh on 2017/02/16 21:28:33
If he were just trying to position those end-level messages only, counting the number of lines would be a very hacky way to do it. that sounds like something *I* would do!
This is actually exactly the way Carmack coded a lot of things in Quake.
How did he test to see if you were connected to a server and therefore the status bar should be drawn? By checking the number of console lines drawn. How did he test to see if a map was running? By checking if the console was fullscreen. Quake is full of crap like this.
#1382
#1383 posted by Kinn on 2017/02/16 22:37:21
Holy shit. I would love to read a compilation of "quake code nightmares" like this.
#1384 posted by PRITCHARD on 2017/02/17 01:54:12
Lightmapped Water
#1385 posted by mh on 2017/02/17 07:50:34
Well that was unexpected. :/
The "semi-official" 32-player deathmatch map death32c, still available on ID's FTP server (ftp://ftp.idsoftware.com/idstuff/quakeworld/maps/) has lightmapped water.
And the lightmaps are messed-up: http://www.quaketastic.com/files/screen_shots/LITWater/messed-up.jpg
I guess this means that other maps with messed-up lightmaps on water surfaces may very well be out there in the wild, but in the absence of engine support for lightmapped water nobody was ever aware of them.
You could control this with a cvar but that's pushing responsibility back to the player, which I don't like.
Since lightmapped water is a new feature I suggest a worldspawn key indicating it's presence. That way engines that don't support it can ignore it. Engines that do support it can pick it up. Maps like death32c aren't subject to false positives.
#1386 posted by PRITCHARD on 2017/02/17 08:08:25
I wonder which compilers were writing that junk data? Worldspawn key has my +1. I've already forgotten all the discussion we had a while back, so I'm a clean slate on that (except for the point that it'd be really cool, that still stands).
#1385
#1387 posted by Spike on 2017/02/17 08:58:01
check the styles. if there's multiple 0s then its clearly uninitialised.
while its possible for a light util to write multiple of the same style, 4 of them is basically pointless as it would oversaturate everything.
#1388 posted by mh on 2017/02/17 10:34:04
check the styles. if there's multiple 0s then its clearly uninitialised.
Bingo, buy the man a large beer.
I believe that these maps may have been lit with ID's then-unfinished qrad tool.
#1389 posted by ericw on 2017/02/17 19:31:04
DarkPlaces shows the same problem on death32c: http://i.imgur.com/vZjyDXC.jpg
I would lean towards a worldspawn key now as well, since there are no released maps using lit water yet.
"Quake Code Nightmares"
#1390 posted by mh on 2017/02/18 00:08:09
From the video code:
vid_modenum.
vid_realmode.
vid_default.
windowed_default.
vid_mode.
DIBWidth.
DIBHeight.
WindowRect.
mainwindow.
dibwindow.
_vid_default_mode.
_vid_default_mode_win.
vid_config_x.
vid_config_y.
window_center_x.
window_center_y.
window_x.
window_y.
window_width.
window_height.
window_rect.
vid.width.
vid.height.
vid.conwidth.
vid.conheight.
r_refdef.vrect.x.
r_refdef.vrect.y.
r_refdef.vrect.width.
r_refdef.vrect.height.
glx.
gly.
glwidth.
glheight.
These are all global variables that are used to store what is essentially the same information. I don't even think I have all of them here. But all that you really need to store is the window handle and you can derive everything else from it. Sure you can potentially optimize by caching some stuff, but this crap reads like any time something was added to the video code, a new set of globals was added just for it. Of course they all have to be kept in sync and consistent, so any work on the video code is a tangled mess from the outset.
#1391 posted by Mafgar on 2017/02/18 02:23:59
I'm trying to host a dedicated server with this and anyone outside my network can't connect..
I love how faithful this client feels to the original Quake and I know netquake is tricky and not as ideal as QW but honestly QW feels OFF to me..
Any ideas on why folks can't connect? Tried dedicated.. noipx.. My ports are open, no firewalls.. I hosted a QW server last night without a hitch.
|