Group: Administrator
Location: Scotland
UK modem old-timer, 15 year break, now spends more time coding than playing.
Mods  /  9 Jan 2017, 16:06
Dev progress: KTX race mode
Have been working recently on changes to race mode in KTX: adding optional pacemakers so you have an indication of the record-holder's route as you try and keep up, and also some changes to help map authors create routes.

The latest version is on for testing, hopefully not too many issues outstanding and it'll be in KTX standard soon after.
Changes for players

Added race routes for speedrush, hoppa2 & zjumps
When a record is set, ktx also saves positions of the player and jumps made, for playback as a pacemaker
Players can opt to have a pacemaker appear during their run, based on previous records


/race_pacemaker // toggles the pacemaker on or off, based on the #1 race record
/race_pacemaker x // turns the pacemaker on, based on race record #x
/race_pacemaker off // turns the pacemaker off
/race_pacemaker jumps // toggles jump indicators on or off
/race_pacemaker trail // changes the trail - the longer the trail, the less detail
/race_pacemaker headstart // changes the headstart the pacemaker has on the player

If you use the latest ezquake nightly (9th January 2017 upwards), the pacemaker should adjust transparency/visibility based on distance, hopefully this stops it getting in the way during a race. Also r_shaftalpha should work when explicitly setting custom colour, so the effect can be made quite subtle.

Note: if you set a top-10 time when using a pacemaker, the mod will state "meag would have taken 7th place" and not save the time on the top-10 scores. However if you get a #1 record on a map, it will still save the demo, and be available via "/cmd dl .". (I'm nasty, but not evil)

Changes for map designers

Embedded routes

Routes can now be embedded in maps by the map maker, with no need to wait for KTX updates. This has been around for a while now, and was used for the first time with race11 by anni. New entities to support this are:

- race_route_start_pitch // initial pitch when spawning
- race_route_start_yaw // initial yaw when spawning
- race_route_falsestart_mode // (1 = player stuck until 'go', 2 = player can false start)
- race_route_weapon_mode // (1 = not allowed, 2 = allowed, 3 = allowed after 2s)
- race_route_name // short name of this route
- race_route_description // longer description of this route (e.g. "ga > ra"
- race_route_timeout // maximum time (in seconds) the player has to complete the route
- target // name of next race_route_marker in this route

- targetname // name for this marker (for others to reference it)
- target // name of next race_route_marker in this route

Markers can be any size

This was added for a new route in slide6, where the default route allows you to jump out a window and avoid the first couple of corners. The marker now covers the full width of the corridor, so players are guaranteed to hit it.

Set the 'size' attribute on the marker entity

Teleporters can end race runs

This was added for maps like zjumps, where falling and being teleported back to the beginning ends a run. It should also mean in the future, small pentagrams in front of large teleporters will no longer be required (unless the map author wants it that way)

Set the race_flags attribute: 1 to fail a run, 2 to mark the run as successfully completed

Doors can remain in the level

By default, doors are removed when the map loads. This was required for maps like dm6, dm2 big room, etc. If the door should be included in races, the map author can now opt to have it kept.

Add the race_flags attribute on the door entity, set flag 4

Future changes

Some other changes I've thought about but not developed yet are teleporters that are flagged to preserve velocity? Maps generally go top to bottom, this would let the player re-appear at the top of the map without a speed penalty. Setting weapon mode based on certain areas of the map, rather than having it per-route? Race routes having sector times, with the time and velocity of the player being stored with their record.

Other than that, I think the next step will be multiple racers at the same time. There are various places in the code that will need changed to support that though, some obvious and some a little more difficult. Having multiple people grinding a map at once I don't think will ever be possible without breaking demo recording in a major way, but having multiple racers and then resetting once all are complete should be considerably easier.

Next up: demo archive website, as promised...
2017-01-12, 14:14
Thanks for sharing your great work!
Looking forward to the demo archive website next.
2017-01-12, 14:54
meag for PREZIDENT!
You have to be logged in to be able to post a comment.