News | Forum | People | FAQ | Links | Search | Register | Log in
Quake Custom Engines
Discuss modified Quake engines here, I guess. What engines do you use? What are the pros/cons of existing engines? What features would you like to see implemented/removed?
First | Previous | Next | Last
 
q_version was never anything but a social feature to create awareness of modern clients.

And get people to upgrade.

If you were using glquake or ProQuake 3.50 and someone typed q_version, 2 things might happen:

1) You see may everyone else on the server was using ProQuake4, Qrack (later DirectQ supported it, but wasn't around at the time).

2) Another player might ask you what you are using and why and someone might even suggest you are using a cheater client.

The social pressure thing worked wonders and I can recall connecting and doing a q_version check and within weeks it was close to 100% modern clients.

At the time, it was important to get people to upgrade so automatic map download had a near 100% rate and people could play custom maps, ctf, coop servers, rocket arena automatically. 
Good Points, Baker 
 
From A Seperate Thread. 
Any Quake 1-2 Ports With Monster Footsteps? [EDIT]
Posted by crystallize [94.180.115.39] on 2016/04/22 15:01:24
Hello.
It would be intresting to see a port where monster sounds are synched to animation, unlike Q2 with gibbed monsters screaming or making falling sounds. 
#522 
That is soooo not an engine thing. 
 
A fiend or a spawn or a dog or a shambler making footstep sounds would be odd.

Maybe someone could make a model with those monsters wearing boots. 
 
I believe AD has footstep sounds for every enemy type. The shambler footstep is the biggest and heaviest but also kind of muted/muffled. 
 
yeah this is mod territory. 
 
Sorry. 
Thought port meant engine? 
 
Thought port meant engine?

It does, but engines wouldn't handle that sort of gamecode - it's something you'd have to do in a QC mod - so the chap asking is barking up the wrong tree.

AD does footsteps, obvs. 
Strings In PQ 
Wasnt sure to post this here or in coding help. Im trying to alter the field "world.message" so it is strcat'd to be something more than just the description. Basicly I made some cute does that appends the Original authors name(s) to the ID maps. However, when the map loads, the message seems to always be either nulled / empty or its something the engine dont want to show. Basicly the line where it use to show in the console is now empty.

I have tried moving it outside of Worldspawn and seems to be no help. Basicly I am doing a strcat in worldspawn to the message field so is this safe? There is no strzone function in older PQ otherwise Id try using that. 
 
An external .ent file would be the proper way to do this. 
 
If you want to change the map name in the signon message, then hacking it in the QC strings or the entities text is totally the wrong way to go.

Just change the message sent as part of svc_serverinfo instead.

Or change the Con_Printf in CL_ParseServerInfo.

And be ready to have a fallback for the case where the mapper has already included their name here. 
 
I disagree about using engine code for what's merely an asset design thing. Unless it's implemented as an extra feature, using a new field instead of hacking world.message.

If this is implemented as an engine hack, it'll need CRC checks to ensure that it won't change the description of all the other start.bsp maps out there, for example (including the ones recompiled for transparent water). It overcomplicates things and creates yet more code to maintain.

Using an external .ent file in the ID1 dir won't affect the start maps of the mods, and will still work with recompiled versions of the vanilla start.bsp. No extra work, and no issues. 
 
PS: I meant to say "(including a CRC whitelist for the ones recompiled for transparent water)". 
World.message 
Thanks Mankrip and MH for your points made. Didnt know PQ supports .ent files. I had some in a local folder, and apparently they have to be populated with the maps original ents, as I tried just using the modified worldspawn field, and the eng crashed in a runaway loop...but I was using modified Qc in a Darkplaces mod with Gyro for that test...so Im not sure it was a good one.

Src mod Im working with for the message field is Runequake...and its got a file called strman.qc (string management I guess) so I thought maybe you could do just about anything with strings there, but apparently theres more to it in PQ. I can code changes to any world .field in Darkplaces no problem like this...but since Im not quite there yet programming eng code, I suppose I will try the .ent file thing for the time being and see how it goes. Thanks. 
 
Yes, .ent files replaces all entity definitions from the .bsp file, so you must get/extract the original .ent files and modify them. 
 
[i]That is soooo not an engine thing.[/i]
moderator moved me here :P

Thanks for the hint about Arcane Dimensions.

Also I want to show you Tenebrae 1.02 (2002) that can't be found in the web today... except may be as source code. It's difference with currently available 1.04 is lack of annoying colored fog and different lights placement. All these old fancy screenshots that Tenebrae was always advertised with, were most likely taken from this version.
http://rutracker.org/forum/viewtopic.php?t=4966700 
Rcon 
Noticed in legacy PQ if you rcon to a non std port other than 26000, initially you appear to be connected ok, however any further rcon commands except "status" are diverted to port 26000 somehow. So far the only client that correctly routes to the initial port and stays there seems to be Qrack.

Decided to try this tool which seems to be mostly designed for Q3 era games [ http://www.ruckman.net/downloads-1 ] and after modifying a line of code, seems to be able to rcon ok into Darkplaces servers, but still cant seem to get it to rcon to a PQ type server. Would anyone have an idea why or what has to be done so it works? 
 
LordHavoc was quite inspired by Quake 3 in the early days which is why DarkPlaces and Nexuiz used the Quake 3 model format, the Quake 3 .bsp format and a master server strategy similar to Quake 3.

ProQuake's author seemed to just want regular Quake to have some features that Quakeworld had for those who preferred NetQuake physics.

It isn't surprising that DarkPlaces rcon is very similar to Quake 3, as Nexuiz in many ways was very Quake 3-like.

ProQuake's author probably used a method very similar to what was in the Quakeworld source code (I'm guessing, but its an educated guess). 
@Baker 
Thanks for that info. I too have noticed the similarities, and I like how it uses the pk3 file system with curl for connecting players to get all the assets to play the mod. It really is a modder friendly engine in that regard.

After reading what you said, I decided to revert the altered code back to the original that came with the above download, and in that form, it wont rcon to my dp server. So the changes we made to rcon_code.php allow DP rcons to happen but so far with PQ, no dice. We changed line 27 or thereabouts as follows:

// $query = "xFFxFFxFFxFFx02 rcon "" . $PASSWORD . "" " . $COMMAND;
$query = "xFFxFFxFFxFFrcon " . $PASSWORD . " $COMMANDn";

Sorry of this is turning into a coding thread, but I didnt get any response to my other rcon issue in the coding area.

Also if anyone is interested in modding said dl so that it covers all the legacy Quake / qw engines with me that would be great. I thought maybe we could have a session manager of sorts with this and add icons up there for all the quake engines so that when you click on one, the "mode" changes so you can rcon into those kinds of servers too. The author was contacted but hes got not much time to help mod it and has ok'd me to modify it to cover other games / engines. 
QW Rcon 
Just a side note since Baker refered to QW rcon maybe being used in PQ, when you rcon into a DP server and successfully send a command that prints something to its con, it will lead with : "QW print command from " , which tends to maybe say that DP is using QW type rcon code?

Another tidbit - DP uses rcon_address as opposed to rcon_server. During my tests this seemed to be incompatable when using DP to try and rcon to a PQ type server. However DP does have a "PQRCON" command, which seems to claim it can rcon to a PQ type server, and also does not work. Weather or not its related to the differences in the 2 cvars for the server address, not sure. 
 
However, if you want to understand network code you really have to be willing to get your hands dirty. There are no shortcuts.

Search for rcon in the source, it is precious few lines in precious few files. Find out how it sent, received, the packaging.

If you end up not being able to figure it out, I wouldn't be too worried.

Engine coding is hard, requires very strong determination and it isn't for everyone. For network, this is doubly true. 
 
Another way of thinking about this: rcon is sending and receiving a text string telling the server to do something.

And considering how few instances of the word "rcon" there is the source, shouldn't you find out how the client sends it, what code it sends (CCREQ_RCON for ProQuake) and where the server receives it.

And I'm not claiming it is "easy".

However, this is the kind of challenge where everything is sitting right out in the open and you can say "This sucks, but if I make up my mind I can read it line by line" in the applicable places -- or the other option is not doing it.

It is just kind of binary decision. 
Rant... 
NQ's netchan sucks.
Its the reason that quake can't easily be played through NATs. Yes, there are hacks that mitigate that in a few engines (like proquake), but not all (like quakespasm), and those hacks don't work for the serverside parts.
Any reliable data that is sent requires two extra udp packets at a minimum - one for the data, and one as an ack.
Its just undesirable in general.
Which is why DP switched at least part of its netchan towards the qw/q2/q3 style for connectionless packets (shame about those reliables really).

rcon is insecure. passwords are sent as plain text for a start. Most engines have no throttling against bad packets (just spam everything you can). If you have rcon passwords embedded in your config then its just a simple stuffcmd(self,"cmd rcp $rcon_password\n"); away from any server that wants to exploit you.
You're probably better off using 'screen' or some equivelent tool to admin your server, although yes, these are slightly more hassle to use (yay! less inclination for admins to interrupt games!).
sending an rcon command to a server that you're not connected to should imho be considered bad form. It may be useful if you just want to kick someone, but chances are you'd want more than that anyway, and it'd be a shame if you eg got the IP wrong and didn't notice.
The response is unreliable, so you have no idea whether the server actually got your command or nor when the response doesn't arrive, and if the response is too long then you also have issues
So yeah, rcon sucks. There are better alternatives, even without modding a server.

I personally tend to enjoy writing networking code. It requires you to follow two 'threads' at once, but unlike actual threads they generally have much better defined sync points.
Tbh at the end of the day, ALL code is just passing messages around the place. Whether its across a network or between cpu cores or just between two sides of an API, for a LOT of people coding is pretty much all just message passing. Even QC has thinks and touches and other events.
Yes, it can take a while to familiarise yourself with the various concepts, but its also very useful if you intend to program anything.
Most of the time, the challenge is figuring out where to start. For NQ that would be CCREQ_* for client->server requests, CCREP_* for server->client responses. Those are all the out-of-band things you can send. Actual connections uses more stuff, of course, so I'm going to gloss over all of that and end the rant here. 
First | Previous | Next | Last
You must be logged in to post in this thread.
Website copyright © 2002-2024 John Fitzgibbons. All posts are copyright their respective authors.