#pickup: KILL_ALL problems and solutions

General Stuff about Armagetron, That doesn't belong anywhere else...
Post Reply
User avatar
sinewav
Graphic Artist
Posts: 6413
Joined: Wed Jan 23, 2008 3:37 am
Contact:

#pickup: KILL_ALL problems and solutions

Post by sinewav »

We recently had some objections to the use of KILL_ALL in #pickup Fortress. The current trend is to use KILL_ALL when players disconnect or crash (happens a lot!), or if they are AFK (often due to some kind of lag or crash). Generally most people approve of this practice, including myself. However it has the following drawbacks:
  • Frustratingly stops play in the most jarring way possible.
  • Not always clear why KILL_ALL was used
  • When playing with sound on it's very LOUD!
I've long thought a "TIME OUT" feature would be nice (even though the relentless nature of the game kind of demands things keep moving). I propose that rather than using KILL_ALL we instead INCLUDE a timeout.cfg and timein.cfg that allows people to continue playing, but suspends any scoring. See my example below:

Code: Select all

# Time Out
CENTER_MESSAGE TIME OUT
CONSOLE_MESSAGE 0xffff00TIME OUT
SCORE_KILL 0
SCORE_WIN 0
FORTRESS_CONQUERED_SCORE 0

Code: Select all

#Time In
CENTER_MESSAGE TIME IN
CONSOLE_MESSAGE 0xffff00TIME IN
SCORE_KILL 2
SCORE_WIN 6
FORTRESS_CONQUERED_SCORE 4
Instead of a jarring halt to play, players are given a center message indicating that the game has paused indefinitely until DC's/AFK players return and shuffle. Instead of using up several rounds, all of this can be done within a single round while the remaining players stay warmed up.

If it works well we may want to put limitations on how it's used in the future, e.g. Two time outs per match or something.
syllabear
Shutout Match Winner
Posts: 1030
Joined: Fri Oct 13, 2006 1:37 pm
Location: UK/HK

Re: #pickup: KILL_ALL problems and solutions

Post by syllabear »

As deso mentioned in discord, you cannot use include unless you are owner rank.

One solution to this would be for people to set a few of their instant chats to the individual console commands included - obviously the more commands you include, the more instants people will have to use, so perhaps just a center_message?

Also there is another way of stopping play without killing people:

Code: Select all

cycle_speed 0
cycle_speed_decay_above 200 (or some other suitably large number)
The Halley's comet of Armagetron.
ps I'm not tokoyami
blondie
Core Dumper
Posts: 160
Joined: Sat Jun 21, 2014 2:57 pm

Re: #pickup: KILL_ALL problems and solutions

Post by blondie »

Code: Select all

#!/usr/bin/php
<?php
/* pause command */
while (1)  {
    $line = rtrim(fgets(STDIN, 1024));
if  (preg_match("/^INVALID_COMMAND/", $line)) {
    $split = explode(" ", $line);
    if($split[1] == "/pause"){
        echo "CYCLE_SPEED 0.0000000001 \n";
        echo "CYCLE_SPEED_DECAY_ABOVE 99999 \n";
        echo "CYCLE_SPEED_MIN 0 \n";
        echo "CYCLE_RUBBER_TIME -1 \n";
        echo "CYCLE_DELAY 99999999999 \n";
       }
    elseif($split[1] == "/unpause"){
       echo "CYCLE_SPEED 30 \n";
       echo "CYCLE_SPEED_DECAY_ABOVE 0.1 \n";
       echo "CYCLE_SPEED_MIN 0.25 \n";
       echo "CYCLE_RUBBER_TIME 10 \n";
       echo "CYCLE_DELAY 0.1 \n";
      }
    }
}
?>

Would need to modify to only respect when admin/mod uses the command
User avatar
sinewav
Graphic Artist
Posts: 6413
Joined: Wed Jan 23, 2008 3:37 am
Contact:

Re: #pickup: KILL_ALL problems and solutions

Post by sinewav »

I've seen blondie's pause script in action and it's pretty amazing. It's an improvement over kill_all for sure, but I wonder if there is a better way that keeps play in motion without scores? Maybe sylla's suggestion of a series of instant chats that do the same function as my Time Out/In suggestion above?
Post Reply