Age :31
Group: Member
Location: Sweden
No presentation has been written.
Mods  /  24 Jul 2017, 06:50
A story of unpredicted events
I remember the first time I sat with QuakeC, I believe I was a little thirteen year old kid and got the hang of modifying the weapons quite fast. Made some nuke launchers, took sounds from old Mod communities soundbanks and did laser nailguns, whatever was fun to do. I did one mod with a readme textfile and everything, named it ”Enhanced Weapons”, then I just totally went on to other things when it was about programming stuff.
Fast forward to University.

I found a web page of a guy that did a little tutorial on how to make a QuakeC mod from scratch. I wondered what a mod looked like that had nothing at all except the symbols needed for the engine to handle to run it? I remember clearly, being on that bare bones mod made me wonder how to place the items, how to draw the doors and the logic for them to open and close on certain conditions. I decided to try to make ”stuff work” out of having id’s source code handy for inspiration but trying to figure out for myself as much as possible, of course having other opinions than what id did on how to write it.

It was fun, really fun.

I made the items first, adding my own twist of the megahealths depleting individually when you have more than one. I did an angle fix so that items that are visually rotated gets a compensated position of the hitbox. I made the DM6 Lg-hatch bug into a condition, documenting it. I did support for func_ladder, never got it to work even though the code still is in there. I discovered certain rocket ammo packs on DM5 were supposed to be grenades. Experimented with minpitch/maxpitch and discovered the grenade launcher would fire backwards if you shot upwards, so made a cvar for an algorithm that handled that better. Did a cvar for level exits teleporting to where the player would start in single player, looking at how e1m2 would play that one out.

What happened later on when I was doing work for FTE was that bigfoot had developed certain optimizations like faster uploading of aliases, eyecandy that fades the light on countdown and support for the general 1on1/2on2/4on4 modes including prewar/countdown. I took his extras into my base code, made it work, gave it back and put it on his Sourceforge project with the name GMAPN (Give Me A Proper Name).

Being busy with school I didn’t touch this project much until Mushi contacted me out of the blue on IRC, speaking about GMAPN and menues… menues? I didn’t see anything in the repo that was particularly special or related to any kind of menu. No, these were local changes that Spike had been doing and then committed later when I asked for them. Now – holy shit so much STUFF!? There was indeed a whole menu system designed around centerprints, catching movement keys and other pretty amazing hacks to work around the fact that GUI in Quake1 mods were not at all thought about when made.
What about all of these modes? Looked kind of scary at first. I tried a duel vs a bot, didn’t like the round based system so I split the thing into ”Duel” and ”Duel Arena”. Duel is what is in KTX, whereas Duel Arena is round based and by default you start out with all weapons and a bit of ammo while the items are still laying on the level. I guess Duel Arena is ”my” mode, the rest of them are not made by me at all.

See my previous blog post for details on testing.
See my forum thread for details on deploying.
2017-07-26, 05:06
Thanks for sharing Molgrum, interesting read there.
I wanna learn more about the dm6 hatch logic, would you mind sharing that?
2017-07-27, 04:46
I don't remember what caused it in vanilla QC but here's the snippet in KTX:

// this code cause "dm6 secret door bug"
if ( from->ct == ctPlayer )
gedict_t *gre = PROG_TO_EDICT ( from->s.v.groundentity );

if ( gre
&& gre == PROG_TO_EDICT( g_globalvars.trace_ent )
&& streq( gre->s.v.classname, "door" )
PROG_TO_EDICT( g_globalvars.trace_ent )->s.v.velocity[2] += 400;

Basically "if you're standing on an entity that can receive damage, it is what you fired+hit LG at and it is a door? make it move upward with 400 UPS". Cspree has a similar condition and a cvar to toggle the condition on/off.
2017-08-01, 11:03
"I discovered certain rocket ammo packs on DM5 were supposed to be grenades."

I never noticed that one but I remember the feels of realising that DM5 had different ent names (and spawn function) for the weapons than the more oft-played DMx maps. item_weapon with spawnflag bitmask determining the weapon instead of weapon_grenadelauncher
2017-08-01, 11:16
The DM6 hatch bug goes like this:

At some point in Quake's history, zapping something that could be damaged (players, buttons) with the LG would give a +400ups Z axis velocity boost. Whether or not the thing being damaged would obey that was another matter, but nonetheless

I can't remember if it was id themselves that disabled the annoying z vel boost or if it was KTeams or predecessor* (or even the switch from NetQuake to QW) but at somepoint somebody brought it back for the DM6 hatch only (by checking the damage-able thing's classname) in order to bring that very specific RJ back into play, instead of it affecting anything that is damage-able which is retarded in fights

* Bonus trivia: A lot of popular mods are based on pre-2.3 version QuakeWorld, including FBCA/KT, Clan Arena, TF
2017-08-01, 11:30
I am blind I didn't even see molgrum's massive reply post :E I hope I added _something_. I can offer something that I just remembered I guess: The very last version of KTeams (2.22?) before it sat redundant for a while before rxr resurrected it with KTPro exhibits the 'jumping shafted players' behaviour. In case anyone is actually keen to see how truly retarded it was to be able to launch people into the air a bit with LG
You have to be logged in to be able to post a comment.