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
 
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. 
SW! 
So, there's not a single engine with software rendering that has modern netcode for decent multiplayer? ppl just care about damn gfx :( 
What's Wrong With Fodquake? 
Rcon, Cont'd 
I was told by the author of Qtracker, [ https://www.qtracker.com ] the intended Gamespy replacement...that its capable of rcon for other gameservers, but he did not include rcon for Quake. He intends to code it in for the next release, so was glad to hear that. As long as there is something that can rcon based on the server type, Ill be satisfied.

As for engine coding, yea have meant to have a go at it again, but something like a video showing how to do it would clear up alot of things for me. So far after asking on other forums no ones interested in making a video, and another idea would be some kind of site that uses an api of sorts to work with and or experiment compiling the engines based on the material uploaded. Probably asking for alot, but at least that way there is some kind of centralized point where its easier to learn and with some real engine coders like we see here having access, it could lead to some interesting new ideas or improvements. 
No You Won't, And You Know It. 
People who make things are determined types that don't get stopped easily.

They don't get stopped by the lack of a video. It isn't like there aren't a million tutorials, books, videos and game dev sites and places like insideqc, gamedev.net, moddb and the other zillon sites.

A developer is someone with a strong determination.

You aren't going to be making anything and you broadcast the "I'm a helpless snowflake" vibe in every post.

If you wanted to get into this stuff ---

-- there are so many resources on the internet that you'd already be doing it.

Real developers overcome obstacles and every real developer has overcome so many obstacles they don't even keep track. 
Coding 
is something I have tried for a long time to get a grasp of and I just don't have the mind for it.

Mapping however is second nature 
Trial And Error 
might be the way some people do things, but its not for everyone.

So far the most professional helpful engine developers that have ever inspired me, dont make condescending or patronizing posts such as above ^^^

Thats about all Im gonna say regarding it. I rather see the discussion stay on track about Quake Engines instead of taking snipes at how people decide to tackle certain problems or gain knowledge. If you have a system that works for you , wondeful. Not everyone has the same way of doing things. 
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.